переключение между разными JPanels при нажатии кнопок jtoolbar - PullRequest
1 голос
/ 27 октября 2011

Я проектирую родительский Jpanel содержит JToolBar && внутреннюю JPanel . По действию JToolBar мне нужно заменить внутренняя JPanel с новой JPanel , которую я уже разработал. переключение между различными JPanels при нажатии кнопок jtoolbar . Как это сделать в IDE NetBeans ?

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» - моя внутренняя панель, но при нажатии кнопки на панели инструментов она не отображается!

Ответы [ 2 ]

4 голосов
/ 28 октября 2011

Я хочу изменить эти панели на внутренней панели главной панели.

Используйте CardLayout для компоновки «внутренней панели главной панели», как показано здесь .

Game view High Scores view

2 голосов
/ 27 октября 2011

Для нескольких панелей вы можете захотеть что-то вроде этого: (Не идеальный код, но это путь, я просто указываю вам путь):

 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().

...