import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class JComboBoxDemo6 implements ItemListener, ActionListener {
String[] fontsize = { "12", "14", "16", "18", "20", "22", "24", "26", "28" };
String defaultMessage = "请选择或直接输入文字大小!";
Font font = null; // 定义一个Font对象
JComboBox combo = null;// 定义一个JComboBox对象
JLabel label = null; // 定义一个JLabel对象
public JComboBoxDemo6() {
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.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 JComboBoxDemo6();
}
public void actionPerformed(ActionEvent e) {
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) {// 若所输入的值不是整数,则不作任何的操作.
}
}
}
}
java JComboBox的事件处理
4星 · 超过85%的资源 需积分: 47 6 浏览量
2010-06-21
17:06:16
上传
评论 1
收藏 60KB ZIP 举报
yanghua68
- 粉丝: 3
- 资源: 69
最新资源
- xyctf:从入门到精通的实用指南.zip
- mmqrcode1714153659780.png
- Screenshot_2024-04-27-06-08-58-486_com.baidu.xin.aiqicha.jpg
- 基于Javaweb+Tomcat+MySQL的大学生公寓管理系统+sql文件.zip
- 实训作业基于javaweb的订单管理系统源码+数据库+实训报告.zip
- 多机调度问题贪心算法基于最小堆和贪心算法求解多机调度问题.zip
- 基于同态加密技术的匿名电子投票系统源码.zip
- Pyqt5项目框架-PyQt项目开发实践
- 基于C通过MQTT的智能农业大棚管理系统(本科毕业设计)
- python+CNN的网络入侵检测算法源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
前往页