打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Swing 测试 组件 actionlistener

package om.hasau.swing.test;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;

import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

/**
 * T.java
 * @author   hasau
 * @E_mail   hasau@163.com
 * @TIME    2012-5-9    上午07:57:26 
 */
/*
 * Swing 测试
 * */
public class SwingComponent {
 JFrame f = new JFrame("Swing 测试");
 // 定义一个按钮,为为之指定图标
 Icon okIcon = new ImageIcon("image/selected.jpg");
 JButton ok = new JButton("确认", okIcon);
 // 定义一个单选按钮,默认选中
 JRadioButton male = new JRadioButton("男", true);
 JRadioButton female = new JRadioButton("女", true);
 // 定义一个ButtonGroup,用于将上边两个单选按钮设置为一组
 ButtonGroup bg = new ButtonGroup();
 // 定义一个复选框,初始不选中
 JCheckBox married = new JCheckBox("是否已婚", false);
 String[] colors = { "红色", "绿色", "蓝色" };
 // 定义一个下拉框
 JComboBox colorChooser = new JComboBox(colors);
 // 定义一个列表选择框
 JList colorList = new JList(colors);
 // 定义一个多行文本域
 JTextArea ta = new JTextArea(8, 20);
 // 定义一个单行文本域
 JTextField name = new JTextField(40);
 JMenuBar mb = new JMenuBar();
 JMenu file = new JMenu("文件");
 JMenu edit = new JMenu("编辑");
 // 创建菜单项
 JMenuItem newItem = new JMenuItem("新建");
 JMenuItem saveItem = new JMenuItem("保存");
 JMenuItem exitItem = new JMenuItem("退出");
 JCheckBoxMenuItem autoItem = new JCheckBoxMenuItem("自动换行");
 JMenuItem copyItem = new JMenuItem("复制");
 JMenuItem pasteItem = new JMenuItem("粘贴");
 JMenu format = new JMenu("格式");
 JMenuItem commenItem = new JMenuItem("注释");
 JMenuItem cancelItem = new JMenuItem("取消注释");
 // 定义一个右键菜单设置程序风格
 JPopupMenu pop = new JPopupMenu();
 // 用于组合三个风格菜单项的ButtonGroup
 ButtonGroup flavorGroup = new ButtonGroup();
 // 创建三个单选按钮用于设置程序风格
 JRadioButton metaItem = new JRadioButton("Metal风格", true);
 JRadioButton windowItem = new JRadioButton("window风格", true);
 JRadioButton motifItem = new JRadioButton("motif风格", true);

 // --------------------初始化界面的init方法-----------------
 public void init() {
  // 创建一个装载文本框,按钮的JPanel
  JPanel buttom = new JPanel();
  buttom.add(name);
  buttom.add(ok);
  f.add(buttom, BorderLayout.SOUTH);
  // 创建一个装载下拉框,三个JCheckBox的Jpanel
  JPanel checkPanel = new JPanel();
  checkPanel.add(colorChooser);
  // 把性别单选按钮添加到JButtonGroup里
  bg.add(male);
  bg.add(female);
  checkPanel.add(male);
  checkPanel.add(female);
  checkPanel.add(married);
  // 创建一个垂直排列的组建Box,装载多行文本域Jpanel
  Box topLeft = Box.createVerticalBox();
  JScrollPane jsp = new JScrollPane(ta);
  topLeft.add(jsp);
  topLeft.add(checkPanel);
  // 创建一个水平排列的Box,装载topLeft,colorList
  Box top = Box.createHorizontalBox();
  top.add(topLeft);
  top.add(colorList);
  // 将top Box容器添加到窗口
  f.add(top);
  // -------------------开始组合菜单,并为菜单添加事件监听
  // 为newItem设置快捷键,设置快捷键时要使用大写字母
  newItem.setAccelerator(KeyStroke
    .getKeyStroke('N', InputEvent.CTRL_MASK));
  newItem.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    ta.append("单击了" + e.getActionCommand() + "\n");
   }

  });
  // 为file菜单添加菜单项
  file.add(newItem);
  file.add(saveItem);
  file.add(exitItem);
  // 为编辑菜单添加菜单项
  edit.add(autoItem);
  // 添加分割线
  edit.addSeparator();
  edit.add(copyItem);
  edit.add(pasteItem);
  // 为commentItem添加提示信息
  commenItem.setToolTipText("将程序代码注释起来");
  // 为format菜单添加菜单项
  format.add(commenItem);
  format.add(cancelItem);
  // 将format菜单组合到edit中,从而形成二级菜单效果
  edit.add(format);
  // 将file,edit菜单添加到mb菜单条中
  mb.add(file);
  mb.add(edit);
  // 为窗口设置菜单条
  f.setJMenuBar(mb);
  // ---------------------组合右键菜单,并安装右键菜单
  flavorGroup.add(motifItem);
  flavorGroup.add(metaItem);
  flavorGroup.add(windowItem);
  pop.add(motifItem);
  pop.add(metaItem);
  pop.add(windowItem);
  // 为三个菜单创建事件监听器
  ActionListener flavorListeren = new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     if (e.getActionCommand().equals("Metal风格")) {
      changeFlavor(1);

     } else if (e.getActionCommand().equals("window风格")) {
      changeFlavor(2);
     } else if (e.getActionCommand().equals("motif风格")) {
      changeFlavor(3);
     }
    } catch (Exception ex) {
     ex.printStackTrace();
    }
   }
  };
  // 为三个菜单添加事件监听器
  metaItem.addActionListener(flavorListeren);
  windowItem.addActionListener(flavorListeren);
  motifItem.addActionListener(flavorListeren);
  // 调用该方法即可设置右键菜单,无须使用事件机制
  ta.setComponentPopupMenu(pop);
  // 设置关闭窗口时退出程序
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.pack();
  f.setVisible(true);
 }

 // 定义一个方法,用于改变界面风格
 private void changeFlavor(int flavor) throws Exception {
  switch (flavor) {
  case 1:

   UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
   break;
  case 2:
   UIManager
     .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
   break;
  case 3:
   UIManager
     .setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
   break;
  }
  //更新f窗口内顶级容器以及内部所有组建UI
  SwingUtilities.updateComponentTreeUI(f.getContentPane());
  //更新mb菜单条以及所有组建
  SwingUtilities.updateComponentTreeUI(mb);
  //更新pop右键菜单以及所有组建
  SwingUtilities.updateComponentTreeUI(pop);
 }
 
 public void ttt(){
  ActionListener add = new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    e.getActionCommand().equals("");
   
   }
  };
 }
 
 //-------------------------程序入口-------------------
 public static void main(String[] args) {
  //设置Swing窗口使用的风格
  //JFrame.setDefaultLookAndFeelDecorated(true);
  new SwingComponent().init();
 }
}


 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
java – 清除JFrame的组件并添加新组件
用java语言实现WebBrowser
JavaSwing图形界面编程(一)
用Java编写的标准计算器、科学计算器、时间转换。
Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能
界面窗口功能
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服