组合框如何编写键盘事件

cxxxzjxu 2018-03-22 08:20:17
比如:如何编写组合框上回车键的事件过程
我试过编写键盘事件都不响应,为什么?

给出代码,或说明为什么
...全文
444 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.*; import javax.swing.*; public class JComboBox8 implements ItemListener,ActionListener{ String[] fontsize={"12","14","16","18","20","22","24","26","28"}; String defaultMessage="请选择或直接输入文字大小!"; Font font=null; @SuppressWarnings("rawtypes") JComboBox combo=null; JLabel label=null; @SuppressWarnings({ "unchecked", "rawtypes", "deprecation" }) public JComboBox8(){ JFrame f=new JFrame("JComboBox"); Container contentPane=f.getContentPane(); contentPane.setLayout(new GridLayout(2,1)); label=new JLabel("Swing",JLabel.CENTER); font=new Font("SansSerif",Font.PLAIN,12); label.setFont(font); combo=new JComboBox(fontsize); combo.getEditor().getEditorComponent().addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == e.VK_ENTER){ System.out.println("Enter Key Pressed!"); } } @Override public void keyTyped(KeyEvent e) { } @Override public void keyReleased(KeyEvent e) { System.out.println("Enter Key Released!"); } }); combo.setBorder(BorderFactory.createTitledBorder("请选择你要的文字大小:")); combo.setEditable(true); ComboBoxEditor editor=combo.getEditor(); combo.configureEditor(editor,defaultMessage); combo.addItemListener(this); combo.addActionListener(this); contentPane.add(label); contentPane.add(combo); f.pack(); f.show(); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public static void main(String[] args){ new JComboBox8(); } public void actionPerformed(ActionEvent e){ System.out.println(e.getActionCommand()); boolean isaddItem=true; int fontsize=0; String tmp=(String)combo.getSelectedItem(); //判断用户所输入的项目是否有重复,若有重复则不增加到JComboBox中。 try{ fontsize=Integer.parseInt(tmp); for(int i=0;i< combo.getItemCount();i++){ if (combo.getItemAt(i).equals(tmp)){ isaddItem=false; break; } } if (isaddItem){ combo.insertItemAt(tmp,0);//插入项目tmp到0索引位置(第一列中). } font=new Font("SansSerif",Font.PLAIN,fontsize); label.setFont(font); }catch(NumberFormatException ne){ combo.getEditor().setItem("你输入的值不是整数值,请重新输入!"); } } public void itemStateChanged(ItemEvent e){//ItemListener界面只有itemStateChanged()一个方法,在此实作它。 if (e.getStateChange()==ItemEvent.SELECTED){//当用户的选择改变时,则在JLabel上会显示出Swing目前字形大小信息. int fontsize=0; try{ fontsize=Integer.parseInt((String)e.getItem()); label.setText("Swing 目前字形大小:"+fontsize); }catch(NumberFormatException ne){//若所输入的值不是整数,则不作任何的操作. } } } } 参考红色代码!!!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧