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);
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值