java - 将 JCheckBox 添加到 JScrollPane

标签 java swing jdbc jscrollpane jcheckbox

我正在尝试根据我的数据库中的内容将复选框动态添加到滚动 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/

相关文章:

java - intellij scala java.lang.classnotfoundException oracle.jdbc.driver.oracledriver

mysql - jdbc-mysql 如果变量为空, "' +变量 +'"的值会发生什么?

java - 具有多个 Activity 的抽屉导航。 - 空指针异常

java - 从线程的内部线程启动 android Activity 。

java - 如何调用 readStudents 方法?

java - 如何构建表单

java - 使用 JDBC,如何将多个 ID 替换为 "DELETE FROM T WHERE id IN (?)"

java - 在 Java (Android) 中以 YYYY-MM-DD 格式获取当前日期

java - 如何从不同的类获取文本文件的输入

java - 为什么我不能在面板上绘画