单击按钮继续添加面板。,

时间:2019-08-01 18:54:36

标签: java swing jpanel jbutton actionlistener

我正在制作一个ToggleButton,它可以在Java Swing中打开一个面板。我已经为包含该按钮的“父面板”使用了“边框布局”,并希望该面板在中心弹出。我已经使用项目监听器来获取选择和取消选择状态。该面板实际上是在按钮单击时创建的。但是我一直按住按钮,该面板一次又一次实例化,导致该面板下的组件重复。

 public static JPanel createDesignButtons(){
        designButtonsPanel.setBackground(Color.DARK_GRAY);
        designButtonsPanel.setLayout(new BorderLayout());

        mainButton.setIcon(Icons.venueIcon); //Main button that shows pop up panel.
        mainButton.setOpaque(false);
        mainButton.setBorderPainted(false);      

        designButtonsPanel.add(mainButton,BorderLayout.WEST);

        mainButton.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent ev) {
            if(ev.getStateChange()==ItemEvent.SELECTED){

                designButtonsPanel.add(createMainButtonsPanel(),BorderLayout.CENTER);
                createMainButtonsPanel().setPreferredSize(new Dimension(600,80));
                designButtonsPanel.revalidate();
                designButtonsPanel.repaint();

            } else if(ev.getStateChange()==ItemEvent.DESELECTED){

            }
        }
    });    

        designButtonsPanel.add(createTabsPanel(), BorderLayout.EAST);
        SwingUtilities.updateComponentTreeUI(designButtonsPanel);
        return(designButtonsPanel);
    }

    public static JPanel createMainButtonsPanel(){

        buttonIconPanel.setBorder(new LineBorder(Color.RED,1));
        buttonIconPanel.setPreferredSize(new Dimension(400,110));        

        JLabel padding = new JLabel(" ");    
        padding.setPreferredSize(new Dimension(20,20));
        buttonIconPanel.add(padding);

        JButton room = new JButton("room");
        buttonIconPanel.add(room);
        buttonIconPanel.revalidate();
        buttonIconPanel.repaint();

        padding.setPreferredSize(new Dimension(20,20));
        SwingUtilities.updateComponentTreeUI(buttonIconPanel);
        return buttonIconPanel;
    }

我想弹出面板,并让“房间”按钮和面板只创建一次。

0 个答案:

没有答案