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

Java 当JButton禁用时,JButton中显示的文本(对于某些选定项),java,swing,jbutton,Java,Swing,Jbutton,我想在JButton中隐藏文本。当用户单击JButton时,将显示文本 这是我的游戏的要求(用户需要在这些按钮中找到“点击”: 现在我的代码以这种方式显示(我希望它们隐藏在按钮内) 随机类别: for (int y = 0; y < x; y++) { int randomThree = new java.util.Random().nextInt(gridNo); int randomThree2 = new java.util.Random().n

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

这是我的游戏的要求(用户需要在这些按钮中找到“点击”:

现在我的代码以这种方式显示(我希望它们隐藏在按钮内)


随机类别:

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

        }

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

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

    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
        }

    }
编辑

 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相同的行大小和列大小存储文本的新数组

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";

    }
 }

对于像“思维清理器”这样的东西,您需要两个数组,一个是按钮数组,另一个是“内容”数组

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

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


一个更简单的解决方案是使用某种类型的
Map
键控
JButton
,其中包含该按钮的值,这将使查找该值更容易。

如果该按钮被禁用,时钟事件将如何触发?我实际上希望文本隐藏在按钮中。该按钮不会首先显示任何文本(文本仅在用户单击包含“点击”的右按钮时显示)。要隐藏文本,请将按钮的前景(文本)颜色设置为与按钮相同。单击时将其前景色更改为黑色。@KunjanThadani但是,即使设置了Jbutton default colorWell,文本也会以某种方式显示出来,在类似“扫雷”的情况下,您需要将值存储在与按钮对应的单独数组中。或者你可以使用图像图标。对不起,我仍然不明白你的意思。我不确定我是否完全理解你的问题,你是否在尝试做类似扫雷游戏的事情?是的。喜欢扫雷游戏!
        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();