我想实现有三功能个模块的界面,每个模块下面又有子功能
打个比方应该比较清楚:我的三个功能模块就像QQ界面上的“QQ好友”,“QQ群”,“最近联系人”
子模块就应该是 这些功能模块下的按钮。
我想实现类似QQ界面那样的效果,一点一个功能模块,它下面的子功能就打开。不知道应该怎么实现。
打个比方应该比较清楚:我的三个功能模块就像QQ界面上的“QQ好友”,“QQ群”,“最近联系人”
子模块就应该是 这些功能模块下的按钮。
我想实现类似QQ界面那样的效果,一点一个功能模块,它下面的子功能就打开。不知道应该怎么实现。
没有深入的学swing,帮你顶顶罗。。
点击时加一个Panel,重绘layout
package test;import java.awt.BorderLayout;
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.JLabel;
import javax.swing.JPanel;public class TestDrawer extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; public JButton btn1 = new JButton("TestBTN1"); public JButton btn2 = new JButton("TestBTN2"); public JButton btn3 = new JButton("TestBTN3"); public JLabel lab1 = new JLabel("TestLab1"); public JLabel lab2 = new JLabel("TestLab2"); public JLabel lab3 = new JLabel("TestLab3"); public JPanel panel = new JPanel(); public TestDrawer() {
init();
} private void init() {
this.setTitle("TestDrawer");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(getCenterPanel(), BorderLayout.CENTER);
this.pack();
this.setVisible(true);
} private JPanel getCenterPanel() {
panel.setLayout(new GridLayout(3, 1));
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
return panel;
} public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(btn1)) {
panel.setLayout(new GridLayout(4, 1));
panel.removeAll();
panel.add(btn1);
panel.add(lab1);
panel.add(btn2);
panel.add(btn3);
panel.validate();
panel.repaint();
}
} /**
* @param args
*/
public static void main(String[] args) {
new TestDrawer();
}
}大概就是这个意思,你可以优化1.你的组成员可以维护成一个Map什么的,我这里写死了一个lab1.2.参考Timer类,swing的Timer类,可以让你程序跑起来很好看,联动的打开.
new JTabbedPane().add("title", JScrollPane)其中的JScrollPane就是你要显示的画面