栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否可以在不将事件引发给侦听器的情况下为JList设置所选项目?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以在不将事件引发给侦听器的情况下为JList设置所选项目?

  1. 您可以

    ListSelectionListener
    从列表中删除所有内容,进行选择,然后再次添加它们。

  2. 您可以

    ListSelectionModel
    使用不引发事件的方法来创建自己的方法,然后将其设置为选择模型
    JList
    ,然后使用
    getSelectionModel().yourSelectIndexMethod(index)

  3. 您还可以将所有其他选择方法转移到列表中,如果通过其他方式选择页面,则只需找到相应的条目,然后在列表中选择项目即可。这样,选择项目并加载页面一次。

选项2的代码:

public class ListTest extends JPanel{private static final String[] items = new String[]{"1", "2", "3"};private JList mylist;private JComboBox myCombo;private Jtextarea myTA;public ListTest() {    setLayout(new BorderLayout());    myCombo = new JComboBox(items);    myCombo.addActionListener(new ActionListener(){        @Override        public void actionPerformed(ActionEvent e){ valueSelectedCombo(myCombo.getSelectedIndex());        }    });    JPanel pn = new JPanel();    pn.setLayout(new BoxLayout(pn, BoxLayout.X_AXIS));    pn.add(myCombo);    pn.add(Box.createHorizontalGlue());    pn.add(new JButton(new AbstractAction("Clear"){        @Override        public void actionPerformed(ActionEvent e){ myTA.setText("");        }    }));    add(pn, BorderLayout.NORTH);    add(new JScrollPane(getJList()), BorderLayout.WEST);    add(new JScrollPane(myTA = new Jtextarea()), BorderLayout.CENTER);}private void valueSelectedList(int index){    myTA.setText(myTA.getText() + "n" + items[index]);}private void valueSelectedCombo(int index){    myTA.setText(myTA.getText() + "n" + items[index]);    ((CustomSelectionModel)mylist.getSelectionModel()).setSelectionSilent(index);}private JList getJList(){    if (mylist == null){        mylist = new JList(items);        mylist.setSelectionModel(new CustomSelectionModel());        mylist.addListSelectionListener(new ListSelectionListener(){ @Override public void valueChanged(ListSelectionEvent e){     if (!e.getValueIsAdjusting()){         valueSelectedList(mylist.getSelectedIndex());     } }        });        mylist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);        mylist.setPreferredSize(new Dimension(100, 106));    }    return mylist;}private static class CustomSelectionModel extends DefaultListSelectionModel{    private boolean isSilent = false;    public void setSelectionSilent(int firstIndex){        isSilent = true;        setSelectionInterval(firstIndex, firstIndex);        isSilent = false;    }    protected void firevalueChanged(int firstIndex, int lastIndex, boolean isAdjusting){        if (isSilent){ return;        }        super.firevalueChanged(firstIndex, lastIndex, isAdjusting);    }}public static void main(String[] args){    Jframe frame = new Jframe("test");    frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);    // Add content to the window.    frame.add(new ListTest());    // Display the window.    frame.pack();    frame.setSize(300, 200);    frame.setVisible(true);}}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419540.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号