我想实现有三功能个模块的界面,每个模块下面又有子功能
打个比方应该比较清楚:我的三个功能模块就像QQ界面上的“QQ好友”,“QQ群”,“最近联系人”
子模块就应该是 这些功能模块下的按钮。
我想实现类似QQ界面那样的效果,一点一个功能模块,它下面的子功能就打开。不知道应该怎么实现。

解决方案 »

  1.   

    分很高。
    没有深入的学swing,帮你顶顶罗。。
      

  2.   

    这个 还真没弄过 学习 ing
      

  3.   

    我做过j2me版的展开关闭,我是在Canvas中控制,界面分成上下两部分,点击某键,在keyPressed中触发,将界面的下部分换成一个新的界面(也就是你这的展开),swing我就不懂了,呵呵,不过原理应该是一样的
      

  4.   

    每个模块都是一个按钮
    点击时加一个Panel,重绘layout
      

  5.   

    用cardlayout,获得它的布局管理器在点击某个按钮时切换某个特定面板
      

  6.   


    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类,可以让你程序跑起来很好看,联动的打开.
      

  7.   

    LZ所说的功能有点像JTabbedPane效果,lz可以考虑用JTabbedPane来写,大概如下
    new JTabbedPane().add("title", JScrollPane)其中的JScrollPane就是你要显示的画面