Java -- Swing 组件使用

1. 示例1

public class Main {

	JFrame f = new JFrame();
	Icon okIcon = new ImageIcon("/home/test/start.png"); //图标文件
	JButton ok = new JButton("OK", okIcon);
	
	JRadioButton male = new JRadioButton("man", true);    //单选按键  group
	JRadioButton female = new JRadioButton("woman", false);
	ButtonGroup bg = new ButtonGroup();
	
	JCheckBox married = new JCheckBox("married ?", false);
	
	String [] colors =  new String[]{"red", "green", "blue"};
	JComboBox<String> colorChooser = new JComboBox<String>(colors); //下拉选单,直接添加string[]
	JList<String> colorList = new JList<String>(colors);
	
	JTextArea ta = new JTextArea(8, 20);
	JTextField name = new JTextField(40);
	JMenuBar mb = new JMenuBar();     //菜单栏
	JMenu file = new JMenu("file");   //file菜单
	JMenu edit = new JMenu("edit");
	Icon newIcon = new ImageIcon("/home/test/start.png");
	JMenuItem newItem = new JMenuItem("New", newIcon);
	Icon saveIcon = new ImageIcon("/home/test/start.png");
	JMenuItem saveItem = new JMenuItem("Save", saveIcon);
	JMenuItem exitItem = new JMenuItem("Exit", newIcon);
	JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("AutoWrap");
	JPopupMenu pop = new JPopupMenu();
	ButtonGroup flavorGroup = new ButtonGroup();
	JRadioButtonMenuItem metalItem =  new JRadioButtonMenuItem("Metal style", true);
	JRadioButtonMenuItem windowsItem =  new JRadioButtonMenuItem("Windows style");
	
	public void init()
	{
		JPanel bottom = new JPanel();
		bottom.add(name);
		bottom.add(ok);
		f.add(bottom, BorderLayout.SOUTH);
		
		JPanel checkPanel = new JPanel();
		checkPanel.add(colorChooser);
		bg.add(male);
		bg.add(female);
		checkPanel.add(male);
		checkPanel.add(female);
		checkPanel.add(married);		
		Box topLeft = Box.createVerticalBox();
		JScrollPane taJsp = new JScrollPane(ta);
		topLeft.add(taJsp);
		topLeft.add(checkPanel);
		
		Box top = Box.createHorizontalBox();
		top.add(topLeft);
		top.add(colorList);
		f.add(top);
		
		newItem.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_MASK));  //添加快捷键
		newItem.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				ta.append("clicked newItem");
			}
		});		
		file.add(newItem);
		file.add(saveItem);
		file.add(exitItem);
		edit.add(autoWrap);
		edit.setToolTipText("autowrap");
		edit.addSeparator();
		mb.add(file);
		mb.add(edit);
		f.setJMenuBar(mb);   //设置菜单栏
				
		pop.add(metalItem);  //可将这两个item添加到flavorGroup 形成单选
		pop.add(windowsItem);
		ActionListener flavorListener = new ActionListener() { // 右键单击选项事件			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				ta.append(e.getActionCommand());
			}
		};
		metalItem.addActionListener(flavorListener);
		windowsItem.addActionListener(flavorListener);
		ta.setComponentPopupMenu(pop);  //设置右键菜单
						
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //设置X窗口退出
		f.pack();
		f.setVisible(true);
	}
		
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Main().init();
	}	
}


 2. 如上, name输入框中输入后 按Ok Button发送到 ta 中去。。。。为这个动作添加快捷键

Action sendMsg = new AbstractAction() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				ta.append(name.getText());
			}
		};
		ok.addActionListener(sendMsg);  //按键添加监听
		name.getInputMap().put(KeyStroke.getKeyStroke('\n', java.awt.event.InputEvent.CTRL_MASK ), 
				"send");  //将Ctrl+Enter 键和"send"关联
		name.getActionMap().put("send", sendMsg);  //将"send"和 sendMsg Action 关联

 

3. JColorChooser 和 JFileChooser 。

4. 弹出提示框 showMessageDialog  showConfirmDialog  showInputDialog

public class Main {

	JFrame f = new JFrame();
	JOptionPane option = new JOptionPane();
	JButton bt1 = new JButton("bt1");
	JButton bt2 = new JButton("bt2");	
	JButton bt3 = new JButton("bt3");	
	JButton bt4 = new JButton("bt4");	
	
	Icon icon = new ImageIcon("/home/test/start.png");
	
	public void init()
	{
		bt1.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {     //消息框
				// TODO Auto-generated method stub
				option.showMessageDialog(f, "show message", "test", JOptionPane.WARNING_MESSAGE, null);
				// Message Type: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, PLAIN_MESSAGE
			}
		});
		
		bt2.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {  //确认框
				// TODO Auto-generated method stub
				int chose = JOptionPane.showConfirmDialog(f, "show message", "test", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, icon);				
				//Option Type: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
				System.out.println(chose);
			}
		});
		
		bt3.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {    //输入框
				// TODO Auto-generated method stub				
				String str = JOptionPane.showInputDialog(f, "message", "title", JOptionPane.WARNING_MESSAGE);			
				System.out.println(str);
			}
		});
				
		f.add(bt1, BorderLayout.SOUTH);
		f.add(bt2, BorderLayout.NORTH);		
		f.add(bt3, BorderLayout.EAST);		
		f.add(bt4, BorderLayout.WEST);		
				
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		f.setVisible(true);
	}
		
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Main().init();		
	}	
}


5. JSplitPane 分割布局

public class Main {

	JFrame f = new JFrame();	
	JLabel bookList = new JLabel("bookList");
	JLabel bookCover = new JLabel("bookCover");
	JLabel bookDesc = new JLabel("bookDesc");
	
	public void init()
	{
		bookList.setPreferredSize(new Dimension(150, 300));
		bookCover.setPreferredSize(new Dimension(300, 150));
		bookDesc.setPreferredSize(new Dimension(300, 150));

		JSplitPane left = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true,
				bookCover, new JScrollPane(bookDesc));  //垂直分割 
		left.setOneTouchExpandable(true);   //一处即展 功能
		left.resetToPreferredSizes();   //
		//left.setDividerSize(50);   //设置分隔条大小
		JSplitPane content = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
				left, bookList);
		
		f.add(content);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		f.setVisible(true);
	}
		
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Main().init();		
	}	
}


6. JTabbedPane 
 

public class Main {

	JFrame f = new JFrame();	
	JLabel bookList = new JLabel("bookList");
	JLabel bookCover = new JLabel("bookCover");
	JLabel bookDesc = new JLabel("bookDesc");
	Icon icon = new ImageIcon("/home/test/start.png");
	JTabbedPane tab = new JTabbedPane(JTabbedPane.LEFT, JTabbedPane.WRAP_TAB_LAYOUT); //定义tab,靠左 及 Tab排列策越
	
	public void init()
	{
		bookList.setPreferredSize(new Dimension(150, 300));
		bookCover.setPreferredSize(new Dimension(300, 150));
		bookDesc.setPreferredSize(new Dimension(300, 150));
	    
		tab.addTab("title", icon, bookList, "bookList");    //添加Tab
		tab.addTab("title", icon, bookCover, "bookCover");
		tab.addTab("title", icon, bookDesc, "bookDesc");
		tab.addChangeListener(new ChangeListener() {	      //Tab事件监听		
			@Override
			public void stateChanged(ChangeEvent e) {
				// TODO Auto-generated method stub
				System.out.println(tab.getSelectedIndex());
			}
		});
		
		f.add(tab);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		f.setVisible(true);
	}
		
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Main().init();		
	}	
}


 7. LayeredPane

 

8. JDesktopPane   JInternalFrame

public class Main {
	JFrame f = new JFrame();
	JDesktopPane desktop = new JDesktopPane();	
	
	public void init()
	{
		JInternalFrame iframe1 = new JInternalFrame("iframe1", true, true, true, true);
		iframe1.reshape(20, 20, 300, 400);
		iframe1.show();
		JInternalFrame iframe2 = new JInternalFrame("iframe2", true, true, true, true);
		iframe2.reshape(20, 20, 300, 400);
		iframe2.show();
		desktop.setPreferredSize(new Dimension(800, 600));
		desktop.add(iframe1);
		desktop.add(iframe2);
				
		f.add(desktop);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		f.setVisible(true);
	}
		
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Main().init();		
	}	
}


 9. 进度条

public class Main {

	JFrame frame = new JFrame("Test ProgressBar");
	JProgressBar bar = new JProgressBar(JProgressBar.VERTICAL );	
	JCheckBox indeterminate = new JCheckBox("indeterminate");
	JCheckBox noBorder = new JCheckBox("noBorder");
	JCheckBox dialogCheck = new JCheckBox("dialogCheck");
	public void init()
	{			
		final ProgressMonitor dialog = new ProgressMonitor(frame, "ProgressMonitor", "complete", 0, 100);
		Box box = new Box(BoxLayout.Y_AXIS);
		box.add(indeterminate);
		box.add(noBorder);
		box.add(dialogCheck);
		frame.setLayout(new FlowLayout());

		frame.add(box);
		frame.add(bar);		

		bar.setMinimum(0); 
		bar.setMaximum(100);

		bar.setStringPainted(true);
		noBorder.addActionListener(new ActionListener()
		{  
			public void actionPerformed(ActionEvent event)
			{				
				bar.setBorderPainted(!noBorder.isSelected());
			}
		});				
		indeterminate.addActionListener(new ActionListener()
		{  
			public void actionPerformed(ActionEvent event)
			{				
				bar.setIndeterminate(indeterminate.isSelected());
				bar.setStringPainted(!indeterminate.isSelected());
			}
		});	
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	
		for (int i = 0 ; i <= 100 ; i++)
		{
	
			bar.setValue(i);
			dialog.setProgress(i);
			try
			{
				Thread.sleep(100);
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) 
	{
		new Main().init();
	}
}


 


 

posted @ 2013-11-04 10:22  今晚打酱油_  阅读(477)  评论(0编辑  收藏  举报