Java之仿js实现树状折叠菜单
程序员文章站
2022-03-28 10:40:11
...
本篇文章给大家分享的内容是Java之仿js实现树状折叠菜单,有着一定的参考价值,有需要的朋友可以参考一下
代码
package com.tuzi;import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; public class B extends JFrame{ private JButton btn1,btn2,btn3,btn4,btn5; private JPanel pNorth,pSouth,subMenuContainer; private JScrollPane pCenter; private JButton[] btn = null; private static boolean expand=false; public B(){ btn1=new JButton("Grade1 menu1"); btn1.setBackground(Color.CYAN); btn2=new JButton("Grade1 menu2"); btn2.setBackground(Color.CYAN); btn3=new JButton("Grade1 menu3"); btn3.setBackground(Color.CYAN); btn3.addActionListener(new ActionHandler()); btn4=new JButton("Grade1 menu4"); btn4.setBackground(Color.CYAN); btn5=new JButton("Grade1 menu5"); btn5.setBackground(Color.CYAN); pNorth=new JPanel(); pNorth.setLayout(new GridLayout(3,1)); pSouth=new JPanel(); pSouth.setLayout(new GridLayout(2,1)); subMenuContainer=new JPanel(); subMenuContainer.setLayout(new GridLayout(25,1)); btn=new JButton[25]; for(int i=0;i<btn.length;i++){ btn[i]=new JButton("[菜单"+i+"]"); btn[i].setBackground(Color.WHITE); } this.setLayout(new BorderLayout()); pNorth.add(btn1); pNorth.add(btn2); pNorth.add(btn3); for(int i=0;i<btn.length;i++){ subMenuContainer.add(btn[i]); } pCenter=new JScrollPane(subMenuContainer); pSouth.add(btn4);pSouth.add(btn5); this.add(pNorth,"North"); this.add(pCenter,"Center"); this.add(pSouth,"South"); this.setVisible(true); this.setSize(500,600); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private class ActionHandler implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { if(btn3==e.getSource()){ if(expand){//折叠 pNorth.setLayout(new GridLayout(3,1)); pNorth.remove(btn4);pNorth.remove(btn5); pSouth.add(btn4);pSouth.add(btn5); for(int i=0;i<btn.length;i++){ subMenuContainer.add(btn[i]); } validate(); getContentPane().repaint(); expand=false; }else{//展开 for(int i=0;i<btn.length;i++){ subMenuContainer.remove(btn[i]); } pSouth.removeAll(); pNorth.setLayout(new GridLayout(5,1)); pNorth.add(btn4); pNorth.add(btn5); pNorth.repaint(); pCenter.repaint(); pSouth.repaint(); validate(); getContentPane().repaint(); expand=true; } } } } public static void main(String[] args) { new B(); } }
效果图
以上就是Java之仿js实现树状折叠菜单的详细内容,更多请关注其它相关文章!
上一篇: DDL