如何从JFrame中删除JButton?

时间:2014-12-21 05:44:07

标签: java swing jbutton

我想在用户点击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);
}
}

4 个答案:

答案 0 :(得分:4)

如果隐藏按钮而不是删除代码的工作,那么您可以使用:

public void actionPerformed(ActionEvent event){
   tmpButton.setVisible(false);
 }

按钮。但是按钮只是隐藏而不是删除。

答案 1 :(得分:3)

最简单的解决方案可能是......

例如......

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);
}