gpt4 book ai didi

java - 将 JCheckBox 添加到 JScrollPane

转载 作者:行者123 更新时间:2023-11-29 03:26:43 25 4
gpt4 key购买 nike

我正在尝试根据我的数据库中的内容将复选框动态添加到滚动 Pane 。目前我有

ResultSet rs = getAvailableUsers();
try {
while (rs.next()){
User temp = new User();
temp.setUsername(rs.getString("username"));
temp.setUserNo(rs.getInt("userno"));
JCheckBox tempCheckBox = new JCheckBox();
tempCheckBox.setText(temp.getUsername());
tempCheckBox.setVisible(true);
checkBoxes.add(tempCheckBox);

}
} catch (SQLException ex) {
Logger.getLogger(SelectProjectTeamGUI.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(checkBoxes);

panel.setLayout(new GridLayout(0,1));
panel.setVisible(true);
scrollPane.removeAll();
scrollPane = new JScrollPane(panel);
for (int i = 0; i < checkBoxes.size(); i++){
panel.add(checkBoxes.get(i));
//panel.repaint();
System.out.println(i);
}
scrollPane.setVisible(true);

我可以看到滚动 Pane 的轮廓,但那里没有任何复选框。所有的复选框都存储在一个 vector 中,然后拉出并一次一个地添加到面板中。任何想法为什么它没有显示任何东西?我知道复选框在 vector 中,因为我已经打印出来并在那里看到了它们。

提前感谢您的帮助。

最佳答案

  • 调用 panel.removeAll(); 而不是 scrollPane.removeAll();

  • 存在逻辑问题
  • JComponent 被添加到 JViewport 而不是 JScrollPane

  • 然后调用(在所有 Items 添加到 JPanel 之后)panel.revalidate()panel.repaint()作为空白中的最后一行代码

  • 您对 Concurency in Swing 有疑问,对已经可见的 Swing GUI 的所有更新都必须在 Event Dispatch Thread 上完成,但在其他方面 panel.repaint() 通知 事件调度线程并正确


  • JList(不可编辑)或 JTable(可编辑)用于一列(可能删除 JTableHeader)而不是 JPanel 带有一堆 JCheckBoxes 和 un_natural 滚动,请注意模型中存储了 Boolean 值,代表 JCheckBox 在查看

关于java - 将 JCheckBox 添加到 JScrollPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20681352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com