java - 在 Java 中为 JButton 着色

标签 java swing jbutton colorize

我正在努力解决为 JButton 数组着色的问题。

我制作了两个 JButton 数组:

public JButton Speler1[] = new JButton[140]; //Player1
public JButton Speler2[] = new JButton[140]; //Player2

这两个按钮阵列构成了赛车游戏的车道 1 和车道 2。我希望玩家 1 和 2 的位置在两个屏幕上都显示为彩色。因此玩家 1 可以看到玩家 2 在哪里,反之亦然。

我已经制作了一种将两个玩家的位置发送给对方的方法。

if (message.contains("Positie")) {
   String posit = message.replaceFirst("Positie", "");
   int positi = Integer.valueOf(posit);
   positie2 = positi;
   kleurHokje kleur = new kleurHokje();
   kleur.hokVerkleur(positi); // positi is the position of each player
}

因此,当我调用方法 hokVerkleur(positi) 时,我想更改 channel 2 上的按钮。

class kleurHokje{
    public void hokVerkleur(int loc){
        Speler2[loc].setBackground(Color.yellow);
        Speler2[positie2].setBackground(Color.gray);                
    }
}

这根本行不通。虽然我对 Speler1[positie] 做了几乎相同的事情,但 Speler1 不使用网络,它按我想要的方式工作。

感谢任何帮助,

谢谢杰夫

编辑: 如果我将代码放在其中一个 MouseListener 中,它可以正常工作,但可以让它自动着色,而不必每次都单击。

 class Klaar extends MouseAdapter {

    public void mouseClicked(MouseEvent e) {            
        Speler2[positie2].setBackground(Color.gray);
    }
}

诗。我的母语不是英语,我希望你理解我的问题。

最佳答案

If I place my code in one of the MouseListeners it works fine:

同意,如果您从 BackGroung Task 更改 JButton 的颜色,那么会有任何更改,您会遇到 Concurency in Swing 的一些问题,您对 GUI 的更新已超出 EDT,

1) 然后你必须将着色 JButtons 包装到 invokeLater() 中;

    java.awt.EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            Speler2[loc].setBackground(Color.yellow);
            Speler2[positie2].setBackground(Color.gray);
        }
    });

2) 但你必须使用常规的 Swing 方法来解决

2a) 将 GUI 相关代码包装到 javax.swing.Action

2b) 从

初始化您的 BackGroung 任务

关于java - 在 Java 中为 JButton 着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664935/

相关文章:

java - 无法从 Hashtable 获取值

java - 使用 post 方法打开 URL android

java - antlr4/java : pretty print parse tree to stdout

Java Swing : Layout Manager like "North" in BorderLayout needed

java - 如何使 JButton 移动到空图 block ?

java远程调试,eclipse无法保持连接

java - 用 JPanel 数组制作棋盘

Java/Swing : Trying to get BorderLayout to play nice with GridBagLayout

java - 如何更改 Java 中按下/单击/选择按钮的外观?

java - 通过 jbutton 从 Jframe 返回