JTattoo 对于JCombox(下拉框)显示不正常?

JTattoo是java的界面包装工具,美化你的swing界面。但是在用的过程中发现JCombox显示不正常,如图所示

注意要在官网上下载jar,然后引入到你工程中:下载jar


代码如下:

public class JTattooTest {
	public static void main(String[] args) {
		JFrame frame = new JFrame("JTattoo测试");
		frame.setLayout(new FlowLayout());
		JComboBox<String> com = new JComboBox<>();
		com.addItem("选项一");
		com.addItem("选项二");
		frame.add(com);
		frame.setSize(new Dimension(300, 200));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		try {
			UIManager.setLookAndFeel("com.jtattoo.plaf.graphite.GraphiteLookAndFeel");
		} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
				| UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
关键一句就是 UIManager.setLookAndFeel("com.jtattoo.plaf.graphite.GraphiteLookAndFeel");
字符串对应是不同风格的类。利用反射创建对象。

其他预设主题参考官网:预设主题   在eclipse下按Ctrl+T 找到对应类的类路径替换上面即可

解决办法就是将这段代码放到最前面即可

代码如下:

public class JTattooTest {
	public static void main(String[] args) {
		try {
			UIManager.setLookAndFeel("com.jtattoo.plaf.graphite.GraphiteLookAndFeel");
		} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
				| UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JFrame frame = new JFrame("JTattoo测试");
		frame.setLayout(new FlowLayout());
		JComboBox<String> com = new JComboBox<>();
		com.addItem("选项一");
		com.addItem("选项二");
		frame.add(com);
		frame.setSize(new Dimension(300, 200));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		
	}
}

可以使用 HTML 的 `<select>` 和 `<option>` 标签来实现下拉框,结合 JavaScript 来动态生成下拉框中的选项。下面是一个简单的示例: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>省市区下拉框</title> </head> <body> <select id="province"> <option value="">请选择省份</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="district"> <option value="">请选择区县</option> </select> <script> // 定义省市区数据 var data = [ { name: '北京市', cities: [ { name: '北京市', districts: [ '东城区', '西城区', '朝阳区', '丰台区', '石景山区', '海淀区', '门头沟区', '房山区', '通州区', '顺义区', '昌平区', '大兴区', '怀柔区', '平谷区', '密云区', '延庆区' ] } ] }, { name: '上海市', cities: [ { name: '上海市', districts: [ '黄浦区', '徐汇区', '长宁区', '静安区', '普陀区', '虹口区', '杨浦区', '闵行区', '宝山区', '嘉定区', '浦东新区', '金山区', '松江区', '青浦区', '奉贤区', '崇明区' ] } ] }, { name: '广东省', cities: [ { name: '广州市', districts: [ '荔湾区', '越秀区', '海珠区', '天河区', '白云区', '黄埔区', '番禺区', '花都区', '南沙区', '增城区', '从化区' ] }, { name: '深圳市', districts: [ '罗湖区', '福田区', '南山区', '宝安区', '龙岗区', '盐田区' ] }, { name: '珠海市', districts: [ '香洲区', '斗门区', '金湾区' ] } ] } ]; // 获取省份下拉框元素 var provinceSelect = document.querySelector('#province'); // 生成省份选项 data.forEach(function(province) { var option = document.createElement('option'); option.value = province.name; option.textContent = province.name; provinceSelect.appendChild(option); }); // 监听省份下拉框的 change 事件 provinceSelect.addEventListener('change', function(event) { var selectedProvince = event.target.value; var citySelect = document.querySelector('#city'); var districtSelect = document.querySelector('#district'); // 清空城市和区县下拉框 citySelect.innerHTML = '<option value="">请选择城市</option>'; districtSelect.innerHTML = '<option value="">请选择区县</option>'; // 如果选择了省份,则生成该省份下的城市选项 if (selectedProvince !== '') { var cities = data.find(function(province) { return province.name === selectedProvince; }).cities; cities.forEach(function(city) { var option = document.createElement('option'); option.value = city.name; option.textContent = city.name; citySelect.appendChild(option); }); } }); // 监听城市下拉框的 change 事件 var citySelect = document.querySelector('#city'); citySelect.addEventListener('change', function(event) { var selectedCity = event.target.value; var districtSelect = document.querySelector('#district'); // 清空区县下拉框 districtSelect.innerHTML = '<option value="">请选择区县</option>'; // 如果选择了城市,则生成该城市下的区县选项 if (selectedCity !== '') { var districts = data .flatMap(function(province) { return province.cities; }) .find(function(city) { return city.name === selectedCity; }).districts; districts.forEach(function(district) { var option = document.createElement('option'); option.value = district; option.textContent = district; districtSelect.appendChild(option); }); } }); </script> </body> </html> ``` 在这个示例中,我们定义了一个多维数组 `data`,包含了省市区的数据。然后通过 JavaScript 代码来动态生成省份、城市和区县下拉框中的选项。当用户选择省份时,会根据选中的省份动态生成该省份下的城市选项。当用户选择城市时,会根据选中的城市动态生成该城市下的区县选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值