`

JavaSE19—Swing高级控件(下)

阅读更多
JavaSE19—Swing高级控件(下)
1. 工具栏与对话框
1) 颜色对话框
javax.swing包中的JColorChooser类的静态方法可以创建一个颜色对话框
showDialog(Component component,String title,Color initialColor);

实例:创建窗体,在窗体中添加按钮,通过按钮改变窗体的背景颜色
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class ColorChooserDemo extends JFrame {
	public ColorChooserDemo(){
		//建立窗口
		super();
		getContentPane().setLayout(null);
		setBounds(100,100,251,182);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//创建面板对象
		final JPanel jp = new JPanel();
		jp.setLayout(null);
		jp.setBounds(0,0,243,148);
		
		getContentPane().add(jp);
		//创建按钮对象
		final JButton jb = new JButton();
		//添加按钮
		jb.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				Color color = JColorChooser.showDialog(getContentPane(),
						"调色板",jp.getBackground());
				jp.setBackground(color);
			}
			
		});
		
		jb.setText("选择颜色");
		jb.setBounds(65,43,86,28);
		jp.add(jb);
		setVisible(true);
	}
	public static void main(String[] args){
		new ColorChooserDemo();
	}
}
2) 确认对话框
通过javax.swing包中的JOptionPane类的静态方法showConfirmDialog()可创建一个确认对话框。

实例:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class AffirmFrameDemo extends JFrame {
	private JTextArea nameText;
	private JTextField nameTextField;
	
	
	public static void main(String[] args){
		EventQueue.invokeLater(new Runnable(){

			@Override
			public void run() {
				// TODO Auto-generated method stub
				try{
					new AffirmFrameDemo();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			
		});
	}
	
	public AffirmFrameDemo(){
		super();
		getContentPane().setLayout(null);
		setBounds(100,100,263,183);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		final JPanel jp = new JPanel();
		jp.setLayout(null);
		jp.setBounds(0,0,260,149);
		getContentPane().add(jp);
		
		nameTextField = new JTextField();
		nameTextField.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				String name = nameTextField.getText();
				//如果没有输入
				if(name.equals("")){
					JOptionPane.showMessageDialog(getContentPane(),
							"没有添加姓名信息!","信息提示框",JOptionPane.CANCEL_OPTION);
					
				}else{
					int n = JOptionPane.showConfirmDialog(getContentPane(),
							"确认正确吗?","信息提示框",JOptionPane.YES_NO_CANCEL_OPTION);
					if(n==JOptionPane.YES_OPTION){
						nameText.append("\n"+name);
						nameTextField.setText("");
					}
				}
			}
			
		});
		
		nameTextField.setBounds(115,10,105,22);
		jp.add(nameTextField);
		
		nameText = new JTextArea();
		nameText.setBounds(40,45,180,85);
		jp.add(nameText);
		
		final JLabel label = new JLabel("请输入姓名:");
		label.setBounds(32,12,78,18);
		jp.add(label);
		
		this.setVisible(true);
	}
}
2. 系统托盘
1) 获取系统托盘
Java中的java.awt.SystemTray类表示桌面的系统托盘,每个Java应用程序在运行时都会分配一个该类的实例。该类提供了一些方法可以实现托盘操作。
在某些平台上,可能不存在或不支持系统托盘,可以使用SystemTray类的isSupported()方法来判断当前系统是否支持系统托盘

if(SystemTray.isSupported()){
SystemTray systemTray = SystemTray.getSystemTray();
}
2) 为系统托盘获取图标
可以使用SystemTray类的add(TrayIcon icon)方法将托盘图标添加到系统托盘中,如果不需要托盘时,可以使用该类的remove(TrayIcon icon)方法将托盘移除。
3) 添加弹出菜单
用托盘图标有3个入口参数的构造方法来实现。
应用TrayIcon()类的setPopup方法来实现
setPopupMenu(PopupMenu pupupMenu)

实例:创建带有系统托盘的窗体,在系统盘中添加“显示主窗体”与“退出”弹出式菜单

import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;


public class SystemFrameDemo extends JFrame {
	public static void main(String[] args){
		SystemFrameDemo newDemo = new SystemFrameDemo();
		newDemo.setVisible(true);
	}
	public SystemFrameDemo(){
		//创建新窗口
		super();
		setTitle("系统托盘");
		setBounds(100,100,260,180);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//创建系统托盘
		if(SystemTray.isSupported()){
			URL url = SystemFrameDemo.class.getResource("system.png");
			ImageIcon icon = new ImageIcon(url);
			Image image = icon.getImage();
			TrayIcon trayIcon = new TrayIcon(image);
			trayIcon.setToolTip("系统托盘");
			//创建弹出窗口
			PopupMenu popupMenu = new PopupMenu();
			MenuItem exit = new MenuItem("退出");
			MenuItem show = new MenuItem("显示出窗口");
			//对菜单进行监听
			exit.addActionListener(new ActionListener(){

				@Override
				public void actionPerformed(ActionEvent arg0) {
					// TODO Auto-generated method stub
					System.exit(0);
				}
					
			});
			show.addActionListener(new ActionListener(){

				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					showFrame();
				}

				
			});
			//将菜单添加到弹出菜单上
			popupMenu.add(show);
			popupMenu.add(exit);
			//将弹出菜单添加到系统托盘上
			trayIcon.setPopupMenu(popupMenu);
			
			SystemTray systemTray= SystemTray.getSystemTray();
			
			try {
				systemTray.add(trayIcon);
			} catch (AWTException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			
		}
		
	}
	private void showFrame() {
		// TODO Auto-generated method stub
		setVisible(true);
	}
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics