Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何比较jLabel的边界厚度?_Java_Swing_Arraylist_Netbeans - Fatal编程技术网

Java 如何比较jLabel的边界厚度?

Java 如何比较jLabel的边界厚度?,java,swing,arraylist,netbeans,Java,Swing,Arraylist,Netbeans,我在DoubleLinkedList中有一个包含各种玩家姓名的JLabel数组。JLabel的边界厚度为1px。当玩家转向时,边界应该变为3px。如果边界为3倍,我无法成功比较,因此我无法切换转弯。变量m是我返回带有3px边框的标签索引所需要的。我真的很感激你的帮助 int m; for (m = 0; m < jlNombresArray.size(); m++) { if(jlNombresArray.get(m).getBorder().equals(javax.swing

我在DoubleLinkedList中有一个包含各种玩家姓名的JLabel数组。JLabel的边界厚度为1px。当玩家转向时,边界应该变为3px。如果边界为3倍,我无法成功比较,因此我无法切换转弯。变量m是我返回带有3px边框的标签索引所需要的。我真的很感激你的帮助

int m;

for (m = 0; m < jlNombresArray.size(); m++) {
    if(jlNombresArray.get(m).getBorder().equals(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(240, 240, 240), 3))) {
        break;
    }
}
intm;
对于(m=0;m
在数据模型中保持选择状态

int selectedPlayerIndex = -1;

void changePlayerView(int playerIndex) {
    if (selectedPlayerIndex != -1) {
        jlNombresArray.get(selectedPlayerIndex).setBorder(
            BorderFactory.createLineBorder(new Color(240, 240, 240), 1));
    }
    selectedPlayerIndex = playerIndex;
    if (selectedPlayerIndex != -1) {
        jlNombresArray.get(selectedPlayerIndex).setBorder(
            BorderFactory.createLineBorder(new Color(240, 240, 240), 3));
    }
    ... repaint ...
}

我的建议是:将您的游戏模型与视图分开,这样您的程序就不会依赖于JLabel边框厚度的当前状态。而是检查模型的状态,然后使用它设置标签边框的厚度。这将使代码更清晰、更易于增强和调试。模型将包含一个播放器对象列表,其中一个对象被指定为具有回合。当模型的状态改变时——当新玩家轮到他们时,视图会收到通知并改变相应标签的状态,再次取决于它发现的是模型的状态。你完全正确谢谢你的帮助这可能需要一些调整,因为我需要播放器的整数,但谢谢你的帮助。我将在我的代码中应用此方法:)