0

Java で JList を使用する際に問題が発生しています。それらの使用方法に関するビデオチュートリアルを見たことがありますが、それらはすべて何らかのレイアウトでそれらを使用しています. 「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 (境界を設定してパネルに追加する) が表示されません。プログラムを実行すると表示されません...

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


    }

これはうまくいくはずです。リストをパネルに追加したことはありません。最後にすべきことは、Visible を設定することです。

于 2015-07-28T19:27:21.197 に答える