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

JCombobox focusLost不触发-为什么?

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

JCombobox focusLost不触发-为什么?

  • FocusListener不是JComboBox的适当监听器,另外一个监听器可以创建无限循环(尤其是可编辑的JComboBox),

  • 的FocusListener是异步的,有时是太难捕捉事件是正确的订单特别是在案件JComponents增加了另一个侦听器(S)太

示例如何从派生收听Focus

JTextField/ JFormattedTextField

import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComboBoxTwo extends Jframe implements ItemListener {    private static final long serialVersionUID = 1L;    private JComboBox mainComboBox;    private JComboBox subComboBox;    public ComboBoxTwo() {        String[] items = {"Select Item", "Color", "Shape", "Fruit"};        String[] subItems1 = {"Select Color", "Red", "Blue", "Green"};        mainComboBox = new JComboBox(items);        mainComboBox.addItemListener(this);        mainComboBox.addFocusListener(fcsListener);        add(mainComboBox, BorderLayout.WEST);        subComboBox = new JComboBox(subItems1);        subComboBox.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXX");        subComboBox.addItemListener(this);        add(subComboBox, BorderLayout.EAST);    }    @Override    public void itemStateChanged(ItemEvent e) {        if (e.getStateChange() == ItemEvent.SELECTED) { if (e.getSource() == mainComboBox) {     System.out.println("Source  : mainComboBox"); } else if (e.getSource() == subComboBox) {     System.out.println("Source  : subComboBox"); }        }    }    public static void main(String[] args) {        SwingUtilities.invokeLater(new Runnable() { @Override public void run() {     Jframe frame = new ComboBoxTwo();     frame.setDefaultCloseOperation(EXIT_ON_CLOSE);     frame.pack();     frame.setLocationRelativeTo(null);     frame.setVisible(true); }        });    }//    private FocusListener fcsListener = new FocusListener() {        @Override        public void focusGained(FocusEvent e) { dumpInfo(e);        }        @Override        public void focusLost(FocusEvent e) { dumpInfo(e);        }        private void dumpInfo(FocusEvent e) { System.out.println("Source  : " + name(e.getComponent())); System.out.println("Opposite : " + name(e.getOppositeComponent())); System.out.println("Temporary: " + e.isTemporary()); final Component c = e.getComponent();//works for editable JComboBox too if (c instanceof JFormattedTextField) {     SwingUtilities.invokeLater(new Runnable() {         @Override         public void run() {  ((JFormattedTextField) c).selectAll();         }     }); } else if (c instanceof JTextField) {     SwingUtilities.invokeLater(new Runnable() {         @Override         public void run() {  ((JTextField) c).selectAll();         }     }); }        }        private String name(Component c) { return (c == null) ? null : c.getName();        }    };}


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

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

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