当JButton禁用时,JButton中显示的文本(对于某些选定的)

时间:2014-11-23 06:22:29

标签: java swing jbutton

我想在JButton中隐藏文本。当用户单击JButton时,将显示文本。

这是我的游戏要求(用户需要在这些按钮中找到"点击"): http://gyazo.com/73475fc9725bbc750463dbefc55d55ad

现在我的代码以这种方式显示(我希望它们隐藏在按钮内) http://gyazo.com/d7ac57eb287aa8601067b87d0755cfc9


随机课程:

for (int y = 0; y < x; y++) {
        int randomThree = new java.util.Random().nextInt(gridNo);
        int randomThree2 = new java.util.Random().nextInt(gridNo);
        if (ButtonArray[randomThree][randomThree2].getText() != "hit") { 
            // to prevent have same position hit
            ButtonArray[randomThree][randomThree2].setText("hit");

        }

主类:按钮操作:

            ButtonArray[row][col].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    ButtonArray[r][c].setEnabled(false); 

                    if ( ButtonArray[r][c].getText().equalsIgnoreCase("hit")) {
                        game.incCountHit(1);
                        if (game.getCountHit() == 3) {
                            startBtn.setText("Restart Game "); // set text
                        }
                    }
                }
            });randHit.randomNo();

2 个答案:

答案 0 :(得分:0)

您可以将此代码放在要显示所需文本的按钮的单击事件上。

虽然你的目的不是很明确,但我想你需要这个:

    if(jButton1.isEnabled()==false){
        jButton1.setText("HIT");
    }

根据您的代码进行编辑:

最初设置按钮的前景色与按钮的背景色相同。

    if ( ButtonArray[r][c].getText().equalsIgnoreCase("hit")) {
        game.incCountHit(1);
        ButtonArray[r][c].setForeground(Color.black);
        if (game.getCountHit() == 3) {
             startBtn.setText("Restart Game "); // set text
        }

    }

修改

假设一个新数组用于存储带有所需rowSize和colSize的文本,该数组与ButtonArray相同。

String[][] newArray = new String [rowSize][colSize];

随机课

 for (int y = 0; y < x; y++) {
    int randomThree = new java.util.Random().nextInt(gridNo);
    int randomThree2 = new java.util.Random().nextInt(gridNo);
    if (newArray[randomThree][randomThree2] != "hit") { 

        newArray[randomThree][randomThree2]="hit";

    }
 }

主类:按钮操作:

        ButtonArray[row][col].addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                ButtonArray[r][c].setEnabled(false); 

                if ( newArray[r][c].equalsIgnoreCase("hit")) {
                    game.incCountHit(1);
                    if (game.getCountHit() == 3) {
                        startBtn.setText("Restart Game "); // set text
                    }
                }
            }
        });randHit.randomNo();

答案 1 :(得分:0)

对于像清扫器这样的东西,你有两个数组,一个是按钮数组,一个是“内容”数组。

触发/按下一个按钮,您将确定按下的按钮的按钮数组中的索引并使用该索引,查找按钮内容的“内容”数组。

然后,您可以将按钮文本设置为“content”数组中给定元素的文本值。

一个更简单的解决方案是使用某种Map键入JButton,其中包含该按钮的值,这样可以更容易地查找值。