按下jtoolbar按钮时在不同的JPanel之间切换

时间:2011-10-27 10:31:17

标签: java swing layout jpanel jtoolbar

我设计父 Jpanel 包含 JToolBar && 内部JPanel 。通过 JToolBar的操作,我需要将内部JPanel 替换为 new JPanel ,我已经设计了。 按下jtoolbar按钮时在不同的JPanel之间切换。  我如何在 NetBeans IDE

中执行此操作
final CardLayout c = new CardLayout();
    jPanel2 = new JPanel(c);
    jPanel2.add(new BarChartPanel(), "CHART");
    jPanel2.add(new ReportViewPanel(), "REPORT");
    ClassLoader cldr = this.getClass().getClassLoader();
    java.net.URL imageURL = cldr.getResource("Images/barimages.jpg");
    ImageIcon aceOfDiamonds = new ImageIcon(imageURL);
    JButton btnChart = new JButton(aceOfDiamonds);
    btnChart.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            c.show(jPanel2, "CHART");

        }
    });
    jToolBar1.add(btnChart);
    jToolBar1.addSeparator();
    jToolBar1.setFloatable(false);

这里'jPanel2'是我的内部面板,但点击工具栏的按钮时,它不是diplaying!

2 个答案:

答案 0 :(得分:4)

  

我想在主面板的内部面板中更改这些面板。

使用CardLayout进行“主面板内部面板”的布局,如图here所示。

Game view High Scores view

答案 1 :(得分:2)

对于多个面板,你可能想要这样的东西:(不是一个完美的代码,但这就是方式,我只是指着你的方式):

 public class MultiPanels {

    private JScrollPane getContent() {
        Dimension d = new Dimension(300,200);
        JPanel panel = new JPanel(new GridBagLayout());
        panel.add(getPanel(d,  6, Color.red));

    }

    private JScrollPane getPanel(Dimension d, int rows, Color color) 
        {
        JPanel panel = new JPanel(new GridBagLayout());
        panel.setBackground(color);
    }     
 }

现在,在问题中,更改主面板的外观如果您要更改外观,则不可能,如果您的意思是只需改变外观,比如背景,你可以通过覆盖paintComponent()方法来实现。