JAVA(UI)笔记

1、JTabbedPane设置为透明

		UIManager.put("TabbedPane.contentOpaque", Boolean.FALSE);//此UIManager可以使JTabbedPane变的透明
		JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
		tabbedPane.setBounds(0, 0, 668, 424);
		tabbedPane.addTab("tab2", null, new JLabel("123"), "123");
		panelContainer.add(tabbedPane);

2、java application 中设置界面风格

try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");//Nimbus风格,新出来的外观,jdk6 update10版本以后的才会出现

//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//当前系统风格

//UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");//Motif风格,外观接近windows经典,但宽宽大大,而且不是黑灰主色,而是蓝黑

//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());//跨平台的Java界面风格,不太明白这种说法

//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");//windows风格

//UIManager.setLookAndFeel("javax.swing.plaf.windows.WindowsLookAndFeel");//windows风格

//UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");//java风格

//UIManager.setLookAndFeel("com.apple.mrj.swing.MacLookAndFeel");//现在在我的机器上没有特殊显示,有待有兴趣的朋友考察,并多谢告知
} catch (Exception e) {
  e.printStackTrace();
}

3、JcomboBox监听

import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class MainFrame extends JFrame implements ItemListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JComboBox college;
	private JComboBox major;
	private Map<Integer, Vector<String>> map = new HashMap<Integer, Vector<String>>();
	
	public MainFrame() {
		Vector<String> collegeItems = new Vector<String>();
		collegeItems.add("物信学院");
		collegeItems.add("数统学院");
		collegeItems.add("文史学院");
		college = new JComboBox(collegeItems);
		college.addItemListener(this);
		
		//物信学院的专业
		Vector<String> vector0 = new Vector<String>();
		vector0.add("物理");
		vector0.add("计算机");
		vector0.add("电信");
		map.put(0, vector0);
		
		//数统学院的专业
		Vector<String> vector1 = new Vector<String>();
		vector1.add("应用数学");
		vector1.add("统计学");
		vector1.add("理论数学");
		map.put(1, vector1);
		
		//文史学院的专业
		Vector<String> vector2 = new Vector<String>();
		vector2.add("汉语言文学");
		vector2.add("历史");
		vector2.add("戏剧文学");
		map.put(2, vector2);
		
		
		major = new JComboBox(new DefaultComboBoxModel(map.get(0)));
		major.addItemListener(this);
		JPanel panel = new JPanel();
		panel.add(college);
		panel.add(major);
		
		this.add(panel, BorderLayout.NORTH);		
		this.setTitle("JComboBox示例");
		this.setSize(800,600);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public void itemStateChanged(ItemEvent e) {
		//在JComboBox的监听事件时总是执行两次,原因如下:
		//ItemListener类中的方法itemStateChanged()事件的itemState有关,itemState在这里的状态有两个,Selected 和 deSelected(即选中和未被选中)
		//所以,当改变下拉列表中被选中的项的时候,其实是触发了两次事件:
		//第一次是上次被选中的项的 State 由 Selected 变为 deSelected ,即取消选择
		//第二次是本次被选中的项的 State 由 deSelected 变为 Selected ,即新选中,所以,必然的 ItemStateChanged 事件中的代码要被执行两次了。
		//加上最外面的if语句,就可以解决这个问题。
		if(e.getStateChange() == ItemEvent.SELECTED) {
			if(e.getSource() == college) {
				int index = college.getSelectedIndex();
				major.setModel(new DefaultComboBoxModel(map.get(index)));
			} else if(e.getSource() == major) {
				JOptionPane.showMessageDialog(this, "你选择的是:" + college.getSelectedItem() + "的" + major.getSelectedItem() + "专业!");
			}
		}		
	}
	
	public static void main(String[] args) {
		new MainFrame();
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值