当前位置: 首页 > 面试题库 >

将Jlist添加到JScrollPane

拓拔嘉颖
2023-03-14
问题内容

我有一个JList,我需要将其放置在滚动窗格中,因为我是从数据库中获取JList的,其值可能会大大增加。我需要能够向下滚动它们,所以我写道:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
public class Checkboxlistener extends JFrame {

private JPanel jpAcc = new JPanel();
private JList checkBoxesJList;

Checkboxlistener() {
   // super("Deposit base", false, true, false, true);
    setSize(1300, 600);
    jpAcc.setLayout(null);
    jpAcc.setBackground(Color.LIGHT_GRAY);
    String labels[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
    checkBoxesJList = new JList(labels);

    checkBoxesJList.setBounds(10, 30, 80, 600);
    checkBoxesJList.setBackground(Color.LIGHT_GRAY);
    checkBoxesJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    JScrollPane scrollPane = new JScrollPane(checkBoxesJList);

    jpAcc.add(checkBoxesJList);
    jpAcc.add(scrollPane);



    getContentPane().add(jpAcc);
    setVisible(true);
}

public static void main(String args[]) {
   Checkboxlistener cbl = new Checkboxlistener();
}
}

因为看不到任何ScrollPane,我在做什么错?


问题答案:

该列表已经包含在滚动窗格中,因此您不能将列表添加到主面板。仅滚动窗格。

您做错的另一件事是不使用布局管理器,而是设置组件的边界和大小。不要那样做
让布局管理器为您定位和调整组件的大小。

最后,您不应该使用主线程中的Swing组件。仅在事件调度线程中。

这是您的代码的修改后的版本,可以正常工作。我删除了背景色,因为这应该由L&F处理:

public class Checkboxlistener extends JFrame {

    private JPanel jpAcc = new JPanel();
    private JList<String> checkBoxesJList;

    Checkboxlistener() {
        jpAcc.setLayout(new BorderLayout());
        String labels[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };
        checkBoxesJList = new JList<String>(labels);

        checkBoxesJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scrollPane = new JScrollPane(checkBoxesJList);

        jpAcc.add(scrollPane);

        getContentPane().add(jpAcc);
        pack();
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                Checkboxlistener cbl = new Checkboxlistener();
                cbl.setVisible(true);
            }
        });
    }
}


 类似资料:
  • 我已经使用Netbeans GUI构建器创建了我的GUI。JList被添加到scrollpane中,如果我硬编码了JList的内容,所有内容都显示得很好。 但是如果我尝试通过动态添加项,则不会出现任何内容。 我只想显示JList中的主题以供视觉使用,其余的都是在后台完成的。

  • 问题内容: 所以,我想要的是选择一个项目时要运行的另一段代码。但是我的问题是,如何对特定项目实施? 这是我的代码: 我该怎么做才能添加到“车辆”,“自行车/自行车”,“船”,“房屋”,“企业”,“对象”,“工作”,“等级”和“许可证”项中? 问题答案: 如果您希望在选择更改时发生某些事情,则不希望使用MouseListener,而希望使用。它不仅是正确的抽象,而且请记住,不使用鼠标就可以更改选择。

  • 我一直在尝试制作一个包含可以选择和配置的字符串的滚动窗格。我一直在研究如何在滚动窗格中实现JList,但没有一种方法有效,这是因为指南一直在使用swing滚动窗格(

  • 问题内容: 我对编程非常陌生,无法添加到。没有错误,但未显示任何内容。 问题答案: 一个渲染器可以得出一个复选框,但不支持单元格编辑器。而是考虑一个单列。默认的渲染器和编辑器为类型的列是一个,对于实施例。

  • 问题内容: 我有一个单击按钮时执行的功能。假设有一个循环将1到10加到。我将该数据添加到中。它完美地工作,并且数字相加。然后我在循环中添加了一个。但是输出是不同的。我想每秒增加1个元素。但是现在它等待10秒,并在第10秒结束时将所有1到10加在一起。我在哪里错了? 问题答案: 您应该在单独的线程中更新列表,否则最终将阻塞事件分发线程。 请尝试以下操作:

  • 问题内容: 我正在尝试创建一个简单的程序来管理员工。尝试添加新员工时,我似乎无法让该员工显示在Jlist上。 主机… 添加员工的对话… 这就是我用来添加员工的方法 我认为这是正确的方法,但似乎无效。任何帮助将不胜感激。 问题答案: 有两个问题, 第一个: 不好:。使用equals(…)或equalsIgnoreCase(…)。理解检查是否绝对不是您感兴趣的 引用 相等性。您需要 函数 相等性,这是