我正在制作一个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;
}
我想弹出面板,并让“房间”按钮和面板只创建一次。