如何在JPanel中使用JList所以我可以设置列表的边界?

时间:2015-07-28 19:15:35

标签: java swing jpanel jlist setbounds

我在Java中使用JLists时遇到问题。我已经观看了有关如何使用它们的视频教程,但它们都使用了某种布局。我想拥有它所以" setPreferedLayout"为null,我可以使用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(设置其界限并将其添加到面板中)当我没有编程时它不会显示...

1 个答案:

答案 0 :(得分: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()不可行。你应该做的最后一件事是设置Visible。