Как использовать JList внутри JPanel, чтобы я мог установить границы списка?

У меня возникли проблемы с использованием JLists в Java. Я смотрел видеоуроки о том, как их использовать, но все они используют их с каким-то макетом. Я хотел бы иметь его так, чтобы "setPreferedLayout" был нулевым, и я могу использовать метод setBounds, чтобы решить, где мои списки и кнопки идут в окне. Когда я делаю это, и я делаю что-то вроде frame.add (список) или панель (список), чтобы добавить его на мою панель, он не отображается в окне, но моя кнопка делает.

У меня есть что-то вроде этого:

    //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 ответ

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();


    }

это должно работать, вы никогда не добавляли свой список на панель, а также вы устанавливали visible, чем pack(), который не будет работать. Последнее, что вы должны сделать, это установить Visible.

Другие вопросы по тегам