我正试图为我的GUI编写一个JToggleButton侦听器。这个监听器的JToggleButtons基本上扩展了UI以显示更多的元素,并且可以再次关闭它们,所有这些都像预期的那样工作。
然而,一些隐藏元素是JTextAreas,这取决于它们是否被填充,应该为相应的JToggleButton提供不同的颜色。
现在,我的代码如下所示:
ActionListener ExpandListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
JToggleButton button = (JToggleButton) e.getSource();
i = (int) button.getClientProperty("number");
y=0;
for(int f=0;f<i;f++){
y += ChapterSize[f];
}
if(ExpandButtons[i].isSelected()){
for(int g=0;g<ChapterSize[i];g++){
Comments[g+y].setVisible(true);
}
}else{
for(int g=0;g<ChapterSize[i];g++){
Comments[g+y].setVisible(false);
}
Boolean GreenFlag = false;
Boolean YellowFlag = false;
Boolean RedFlag = false;
for(int g=0;g<ChapterSize[i];g++){
if(!Comments[g+y].getText().isEmpty()){
GreenFlag = true;
YellowFlag = true;
}else{
GreenFlag = false;
}
if(Comments[g+y].getText().isEmpty()){
RedFlag = true;
}else{
RedFlag = false;
}
}
if(GreenFlag == true){
ExpandButtons[i].setBackground(Color.GREEN);
YellowFlag = false;
}
if(RedFlag == true)ExpandButtons[i].setBackground(Color.RED);
if(YellowFlag == true)ExpandButtons[i].setBackground(Color.YELLOW);
}
}
};
这是可行的,但我有一些问题。因为我不知道如何在ColorFlags的循环中放入长度可变的AND或or语句,所以只有最后一个被检查的JTextArea才真正与布尔值的状态相关。因此,即使有空的文本区域,只要不是最后一个或所有文本区域,按钮也将保持绿色。