Java 将JCheckBox添加到JScrollPane
我试图根据数据库中的内容动态地向滚动窗格添加复选框。目前我有Java 将JCheckBox添加到JScrollPane,java,swing,jdbc,jscrollpane,jcheckbox,Java,Swing,Jdbc,Jscrollpane,Jcheckbox,我试图根据数据库中的内容动态地向滚动窗格添加复选框。目前我有 ResultSet rs = getAvailableUsers(); try { while (rs.next()){ User temp = new User(); temp.setUsername(rs.getString("username")); temp.setUserNo(rs.getInt("userno"));
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);
ResultSet rs=getAvailableUsers();
试一试{
while(rs.next()){
用户临时=新用户();
临时设置用户名(rs.getString(“用户名”);
临时setUserNo(rs.getInt(“userno”);
JCheckBox tempCheckBox=新的JCheckBox();
tempCheckBox.setText(temp.getUsername());
tempCheckBox.setVisible(true);
复选框。添加(临时复选框);
}
}catch(SQLException-ex){
Logger.getLogger(选择projectteamgui.class.getName()).log(Level.SEVERE,null,ex);
}
System.out.println(复选框);
panel.setLayout(新网格布局(0,1));
面板设置可见(真);
scrollPane.removeAll();
scrollPane=新的JScrollPane(面板);
对于(int i=0;i
我可以看到滚动窗格的轮廓,但没有任何复选框。所有复选框都存储在一个向量中,然后一次一个地拉出并添加到面板中。你知道为什么它什么都没显示吗?我知道复选框在向量中,因为我已经打印出来并在那里看到了它们
提前感谢您的帮助。- 调用
panel.removeAll()有一个逻辑问题代码>而不是
滚动窗格.removeAll()代码>
被添加到JComponent
而不是JViewport
JScrollPane
- 然后调用(将所有项目添加到
后)JPanel
和panel.revalidate()
作为空白中的最后一行代码panel.repaint()
- 您遇到问题,对已可见的
的所有更新必须在Swing GUI
事件调度线程上完成,但在另一方面
通知面板上。重新绘制()
,并且正确事件调度线程
- 使用带有一列的
(不可编辑)或JList
(可编辑)(可以删除JTable
),而不是带有一堆JTableHeader
的jcheckbox
,并使用非自然滚动,注意模型中存储了JPanel
布尔值,表示视图中的
JCheckBox
- 调用
panel.removeAll()有一个逻辑问题代码>而不是
滚动窗格.removeAll()代码>
被添加到JComponent
而不是JViewport
JScrollPane
- 然后调用(将所有项目添加到
后)JPanel
和panel.revalidate()
作为空白中的最后一行代码panel.repaint()
- 您遇到问题,对已可见的
的所有更新必须在Swing GUI
事件调度线程上完成,但在另一方面
通知面板上。重新绘制()
,并且正确事件调度线程
- 使用带有一列的
(不可编辑)或JList
(可编辑)(可以删除JTable
),而不是带有一堆JTableHeader
的jcheckbox
,并使用非自然滚动,注意模型中存储了JPanel
布尔值,表示视图中的
JCheckBox