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);
}
}