Java 如何比较jLabel的边界厚度?
我在DoubleLinkedList中有一个包含各种玩家姓名的JLabel数组。JLabel的边界厚度为1px。当玩家转向时,边界应该变为3px。如果边界为3倍,我无法成功比较,因此我无法切换转弯。变量m是我返回带有3px边框的标签索引所需要的。我真的很感激你的帮助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
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边框厚度的当前状态。而是检查模型的状态,然后使用它设置标签边框的厚度。这将使代码更清晰、更易于增强和调试。模型将包含一个播放器对象列表,其中一个对象被指定为具有回合。当模型的状态改变时——当新玩家轮到他们时,视图会收到通知并改变相应标签的状态,再次取决于它发现的是模型的状态。你完全正确谢谢你的帮助这可能需要一些调整,因为我需要播放器的整数,但谢谢你的帮助。我将在我的代码中应用此方法:)