JButton上的setVisible()在构造函数外部不起作用



我试着弄清楚了2天,没有任何帮助。我试了100多种组合,一无所获。这是我最后的机会了。我正在编写一款简单的游戏。1个JFrame,几个jpanel。经过一些行动,我需要"再次播放按钮"会出现。在JPanel构造函数中添加一个按钮(默认可见性)会显示它的所有时间,在其他方法中添加setVisible(false)然后调用(true)是行不通的。我试过revalidate(), rapaint()等

public class Game extends JPanel implements ActionListener{
private JButton playAgain = new JButton();
public Game(){
    setFocusable(true);
    requestFocus();
    this.setPreferredSize(new Dimension(800,600));
    this.setLayout(null);
    addButton();
    this.setVisible(true);
}
private void addButton() {
    playAgain.setBounds(600, 550, 200, 50);
    playAgain.addActionListener(this);
    playAgain.setBorder(null);
    playAgain.setCursor(new Cursor(Cursor.HAND_CURSOR));
    playAgain.setContentAreaFilled(false);
    playAgain.setVisible(false);
    this.add(playAgain);
}
private void showButton() {
    playAgain.setVisible(true);
}
public void actionPerformed(ActionEvent e){
        if(king1.isKingStopped()){
            gameFinished = true;
            addButton();
            //showButton(); // doesnt work ;/
}

showButton()函数不改变可见性。这只是代码中有问题的部分,而不是全部。谢谢。

试着把

playAgain = new JButton();

在你的构造函数中,比如:

public class Game extends JPanel implements ActionListener{
private JButton playAgain;
public Game(){
playAgain = new JButton();
}
}

我找到了!将JButton更改为"static"并将showButton()更改为static void。按钮现在是可见的。有人知道为什么吗?:)也许它能帮助别人:)谢谢大家。

private static JButton playAgain();
private static showButton();

最新更新