1

コード:

list1items = new DefaultListModel();
list1items.addElement("-");
list1 = new JList(list1items);
list1.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
list1.setBounds(0,0, 100,100);
JScrollPane list1scr = new JScrollPane(list1);
list1scr.setPreferredSize(new Dimension(20, 20));
list1.setVisibleRowCount(8);
getContentPane().add (list1scr);

また、スクロールバーは表示されません。アイテムが多すぎると隠れてしまい、手が届きません。これを解決するには?

4

2 に答える 2

4

Michael Ardan の回答を拡張するには、JScrollPane の代わりに JList をパネルに追加していました。JScrollPane をパネルに追加し、JList を ScrollPane に追加して機能させる必要があります。setBoundsそれらを使用したり、削除したりする必要はまったくありませんsetPreferredSize。メソッドを呼び出すと、JList がすべての処理を行いますsetVisibleRowCount。ScrollPane の動作例を次に示します。それでも問題が解決しない場合は、独自のコードをこの例に差し込んで、壊れるまで続けてください。次に、何が壊れたのか教えてください。そうでない場合は、マイケルの答えを受け入れてください。

import java.awt.*;
import javax.swing.*;

public class Temp extends JPanel{
    public Temp(){

        DefaultListModel list1items = new DefaultListModel();
        list1items.addElement("-");
        for(int i = 0; i < 200; i++)
            list1items.addElement("Item " + i);
        JList list1 = new JList(list1items);
        list1.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
        JScrollPane list1scr = new JScrollPane(list1);
        list1.setVisibleRowCount(8);
        add (list1scr);
    }


    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new Temp());
        frame.pack();
        frame.setVisible(true);
    }
}
于 2012-12-20T15:56:44.177 に答える