<< ATI新ドライバ | Home | 64bit OS >>
PR: 転職    お墓    エコ    通販    結婚相談所    シルバー    質屋    葬式    漫画    エステサロン   

ListSelectionEvent

なんだこれ、動きがさっぱり読めないぞ。

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        JFrame frm = new JFrame();
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frm.setLayout(new FlowLayout());
        Container c = frm.getContentPane();
        final DefaultListModel model = new DefaultListModel();
        final JList list = new JList(model);
        list.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e) {
                System.out.println(e);
            }
        });
        c.add(list);
        list.setPreferredSize(new Dimension(200, 200));
        JButton btn1 = new JButton("Add");
        c.add(btn1);
        btn1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                model.addElement("Hello");
            }
        });
        JButton btn2 = new JButton("Deselect");
        c.add(btn2);
        btn2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                list.clearSelection();
            }
        });
        frm.pack();
        frm.setVisible(true);
    }
});

Addボタンを5回ほど押して、要素を5つ追加。1個目をクリック。
firstIndex= 0 lastIndex= 0

2個目をクリック。
firstIndex= 0 lastIndex= 1

ここで、既に良く分からない。firstIndex= 1 lastIndex= 1じゃないんだろうか?

もう一度1個目をクリック。
firstIndex= 0 lastIndex= 1

なんじゃこりゃ。バグ?

あ、そうか、1つ前の状態が格納されているんだよ。きっとつまりfirstIndex= 0 lastIndex= 0は、何も選択されていない状態なわけだ。

1個目をクリックしてから、deselectボタンで選択解除。
firstIndex= 0 lastIndex= 0

違った。やっぱり、さっぱり分からん。




コメント追加 トラックバック送信
このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 花井 志生 Since 1997.6.8