0

我在 Java 中使用 JLists 时遇到问题。我看过有关如何使用它们的视频教程,但它们都以某种布局使用它们。我想要它,所以“setPreferedLayout”为空,我可以使用 setBounds 方法来决定我的列表和按钮在窗口上的位置。当我这样做时,我会执行诸如 frame.add(list) 或 panel.(list) 之类的操作以将其添加到我的面板中,它不会显示在窗口上,但我的按钮会显示。

我有这样的事情:

    //DECLARATION
    JFrame f = new JFrame("main Window");
    JPanel p = new JPanel();

    int WIDTH = 800;
    int HEIGHT = 650;

    public static JList mainList;
    String[] mainArray = {"one","two","three"};

    //INIT
    public mainClass() {
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(p);
        f.setVisible(true);
        p.setLayout(null);
        p.setPreferredSize( new Dimension(WIDTH,HEIGHT) );
        f.pack();
        p.setVisible(true);

        p.setFocusable(true);

        System.setProperty("sun.java2d.opengl","true");
        Thread thr1 = new Thread (r1);
        thr1.start();

        mainList = new JList(mainArray);
        mainList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        mainList.setSelectedIndex(0);
        mainList.setVisibleRowCount(3);
        JScrollPane listScrollPane = new JScrollPane(mainList);
    }

再次,我正在尝试创建一个 JList,我可以在任何我想要的位置拥有它。这基本上就是我想要得到的。每当我尝试按照它的工作方式进行操作时,Jbuttons(设置其边界并将其添加到面板)当我运行他的程序时它不会显示出来......

4

1 回答 1

1
public mainClass() {
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        mainList = new JList(mainArray);
        mainList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        mainList.setSelectedIndex(0);
        mainList.setVisibleRowCount(3);
        JScrollPane listScrollPane = new JScrollPane(mainList);
        p.add(listScrollPane);
        f.add(p);
        p.setPreferredSize( new Dimension(WIDTH,HEIGHT) );        
        f.pack();        
        f.setVisible(true);
        p.setFocusable(true);

        System.setProperty("sun.java2d.opengl","true");
        Thread thr1 = new Thread (r1);
        thr1.start();


    }

这应该可以工作,您从未将列表添加到面板,而且您将其设置为比 pack() 可见,那是行不通的。你应该做的最后一件事是设置可见。

于 2015-07-28T19:27:21.197 回答