java - 如何获取 ArrayList 中许多 JCheckBoxMenuItem 的状态?
问题描述
我正在开发一个程序,让我可以通过 GUI 搜索教师和学生。
因此,您可能都知道在网站上搜索某些内容以过滤某些信息而不是所有信息时的选项。为了实现这一点,我创建了一个JMenuBar
和它对应JMenu
的多个JCheckBoxMenuItem
s。如果输入了一个人的姓名,则会运行一个方法来检查该人是否在系统中。如果是,则调用另一种方法来检查是否JCheckBoxMenuItem
选择了 s 以继续进行常规搜索或过滤搜索。我没有对每个选项进行编码,而是将所有JCheckBoxMenuItem
s 放在一个ArrayList
. 我创建了一个循环遍历这个的新方法,ArrayList
并检查了JCheckBoxMenItem
on 位置i
isSelected()
如果是这样,则执行某个操作,但似乎它甚至不会遍历整个列表,即使选择了某些内容也会停止。它应该在技术上工作,但我想我没有看到的东西丢失了。如果我尝试执行该方法,它永远不会检查是否JCheckBoxMenuItem
选择了 a 。我将在此处发布部分代码并提供指向我的 GitHub 的链接,您可以在其中找到所有类和整个代码:https ://github.com/Gonzo-CR/Home-Projects/tree/master/project_SuchSystem
该类TestFrame
是带有解释代码的 GUI。一些变量和文本是用德语写的,我希望这不会带来任何问题。需要按下 GUI 中未放置的菜单栏才能开始搜索。
public void einzelLehrerSuche()
{
model = (DefaultTableModel)table_Lehrer.getModel();
loescheLehrerTabelle();
String lehrername = tfSuchfeldLehrer.getText();
boolean lehrerGefunden = false;
if(lehrername.isEmpty() == false)
{
for(int i = 0; i < lehrerliste.size(); i++)
{
lehrer = lehrerliste.get(i);
if(lehrer.getName().equals(lehrername) || lehrer.getNachname().equals(lehrername))
{
if(checkAlleChbx(i) == true)
{
lehrerGefunden = true;
checkAlleChbx(i);
}
else
{
lehrerGefunden = true;
if(lehrer.isMehrereklassen() == true && lehrer.isMehrerefaecher() == true)
{
model.addRow(new Object [] {lehrer.getName(), lehrer.getNachname(), lehrer.getKuerzel(), lehrer.getKlasse_1().getBezeichnung(), lehrer.getKlasse_2().getBezeichnung(), lehrer.getFach().getBezeichnung(), lehrer.getFach2().getBezeichnung()});
}
else if(lehrer.isMehrereklassen() == true && lehrer.isMehrerefaecher() == false)
{
model.addRow(new Object [] {lehrer.getName(), lehrer.getNachname(), lehrer.getKuerzel(), lehrer.getKlasse_1().getBezeichnung(), lehrer.getKlasse_2().getBezeichnung(), lehrer.getFach().getBezeichnung(), " --- "});
}
else if(lehrer.isMehrereklassen() == false && lehrer.isMehrerefaecher() == true)
{
model.addRow(new Object [] {lehrer.getName(), lehrer.getNachname(), lehrer.getKuerzel(), lehrer.getKlasse_1().getBezeichnung(), " --- ", lehrer.getFach().getBezeichnung(), lehrer.getFach2().getBezeichnung()});
}
else
{
model.addRow(new Object [] {lehrer.getName(), lehrer.getNachname(), lehrer.getKuerzel(), lehrer.getKlasse_1().getBezeichnung(), " --- ", lehrer.getFach().getBezeichnung(), " --- "});
}
break;
}
break;
}
}
if(!lehrerGefunden)
{
JOptionPane.showMessageDialog(null, "Die gesuchte Person ist nicht im System!");
tfSuchfeldLehrer.setText("");
}
}
else
{
JOptionPane.showMessageDialog(null, "Geben Sie einen Namen in das Suchfeld ein!");
}
}
public boolean checkboxChecking(int i)
{
model = (DefaultTableModel)table_Lehrer.getModel();
loescheLehrerTabelle();
if(chbxKrzelAnzeigen.isSelected())
{
chbxKuerzelCheck(i);
}
else
{
return false;
}
return true;
}
public void chbxKuerzelCheck(int lehrerIndex)
{
lehrer = lehrerliste.get(lehrerIndex);
model.addRow(new Object [] {lehrer.getName(), lehrer.getNachname(),lehrer.getKuerzel(), " --- ", " --- ", " --- ", " --- "});
}
public boolean checkAlleChbx(int k)
{
ChbxGroup();
System.out.println(chbxListe.get(0).getText());
model = (DefaultTableModel)table_Lehrer.getModel();
loescheLehrerTabelle();
for(int i = 0; i < chbxListe.size(); i++)
{
System.out.println(chbxListe.size());
System.out.println(i);
System.out.println(chbxListe.get(i).getText());
model = (DefaultTableModel)table_Lehrer.getModel();
JCheckBoxMenuItem cbMI = chbxListe.get(i);
if(cbMI.isSelected())
{
String chbxname = cbMI.getText();
System.out.println(chbxname);
if(chbxname.equals("K\u00FCrzel Anzeigen"))
{
System.out.println("Kürzel gefunden");
chbxKuerzelCheck(k);
}
else
{
System.out.println("Didn't work!");
}
}
else
{
System.out.println("False angekommen");
return false;
}
}
System.out.println("True angekommen");
return true;
}
该方法checkBoxChecking
用于单独检查复选框,但现在未使用。该方法einzelLehrerSuche()
是链接到问题所在方法的搜索算法checkAlleChbx
。我非常感谢您的帮助。
解决方案
推荐阅读
- java - 约束集不起作用
- mysql - 使用基于“类型”的变量存储 MySQL 对象
- python - 一次在 Pandas 中重新编码多个变量
- ios - UITableview 里面的 UICollectionView,table 应该显示动态值,没有固定值。如何生成这个?
- ionic-framework - 离子:package.json 缺少启动脚本
- python-3.x - 如何使用python和selenium动态获取网页中触发的标签
- yii2 - Yii2客户端验证刷新表单提交页面
- java - 如何在没有 Sonarqube 问题的情况下在 spring 中自动连接静态字段?
- ajax - AJAX成功的Django渲染模板
- pandas - 熊猫适用于索引