我想在用户点击JButton
时删除JButton
。
我知道我应该使用remove方法,但它不起作用。
我该怎么做?
这是我的代码:
class Game implements ActionListener {
JFrame gameFrame;
JButton tmpButton;
JLabel tmpLabel1, tmpLabel2, tmpLabel3, tmpLabel4;
public void actionPerformed(ActionEvent e) {
gameFrame.remove(tmpLabel1);
gameFrame.getContentPane().validate();
return;
}
Game(String title) {
gameFrame = new JFrame(title);
gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameFrame.setBounds(100, 100, 300, 500);
gameFrame.setResizable(false);
gameFrame.getContentPane().setLayout(null);
tmpLabel4 = new JLabel(new ImageIcon("./images/bomber.jpg"));
tmpLabel4.setSize(200, 200);
tmpLabel4.setLocation(50, 100);
tmpButton = new JButton("Play");
tmpButton.setSize(100, 50);
tmpButton.setLocation(100, 350);
tmpButton.addActionListener(this);
gameFrame.getContentPane().add(tmpLabel4);
gameFrame.getContentPane().add(tmpButton);
gameFrame.setVisible(true);
}
}
答案 0 :(得分:4)
如果隐藏按钮而不是删除代码的工作,那么您可以使用:
public void actionPerformed(ActionEvent event){
tmpButton.setVisible(false);
}
按钮。但是按钮只是隐藏而不是删除。
答案 1 :(得分:3)
最简单的解决方案可能是......
ActionListener
附加到该按钮,有关详细信息,请参阅How to Use Buttons, Check Boxes, and Radio Buttons和How to Write an Action Listeners ActionListener
后,提取事件来源JButton buttonThatWasClicked = (JButton)actionEvent.getSource()
例如......
Container parent = buttonThatWasClicked.getParent();
parent.remove(buttonThatWasClicked);
parent.revaidate();
parent.repaint();
作为一些想法......
答案 2 :(得分:1)
首先,在actionPerformed方法中,您需要检查是否单击了该按钮。如果单击该按钮,请将其删除。方法如下:
if(e.getSource() == tmpButton){
gameFrame.getContentPane().remove(tmpButton);
}
将此添加到您的actionPerformed方法
答案 3 :(得分:0)
不要将你的按钮添加到jframe,而是添加你想要的每个组件!
public void actionPerformed(ActionEvent event)
{
//gameFrame.getContentPane().add(tmpButton); -=> "Commented Area"
gameFrame.getContentPane().validate();
}
或隐藏你的按钮
public void actionPerformed(ActionEvent event)
{
tmpButton.setVisible(false);
}