intellijideaSwingGUI
Swing是⼀个⽤于开发Java应⽤程序⽤户界⾯的开发⼯具包。
以抽象窗⼝⼯具包(AWT)为基础使跨平台应⽤程序可以使⽤任何可插拔的外观风格。Swing开发⼈员只⽤很少的代码就可以利⽤Swing丰富、灵活的功能和模块化组件来创建优雅的⽤户界⾯。 ⼯具包中所有的包都是以swing作为名称
1. intellij idea 创建maven项⽬
2.⽬录为
1. hello world 代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
public class helloworld {
//创建窗体,JFrame
JFrame f = new JFrame("测试");
//定义⼀个按钮,并为之指定图标
//ImageIcon(Image image)
/
/根据图像对象创建⼀个 ImageIcon。  Icon是接⼝,ImageIcon实现了该接⼝,多态的体现    //定义⼀个单选按钮,并为之指定图标
Icon okIcon = new ImageIcon("ico/ok.png");
JButton ok = new JButton("确认", okIcon);
//定义⼀个单选按钮,出事处于选中状态
//JradioButton  实现⼀个单选按钮,此按钮项可被选择或取消选择,并可为⽤户显⽰其状态。    //JRadioButton(String text, boolean selected)
//创建⼀个具有指定⽂本和选择状态的单选按钮。
JRadioButton male = new JRadioButton("男", true);
JRadioButton female = new JRadioButton("⼥", false);
ButtonGroup bg = new ButtonGroup();
//定义⼀个复选框,出事状态处于没有选中状态
JCheckBox married = new JCheckBox("是否已婚?", false);
String[] colors = new String[]{"红⾊", "绿⾊", "蓝⾊"};
//定义⼀个下拉选择框
//定义⼀个下拉选择框
//JComboBox(Object[] items)
//创建包含指定数组中的元素的 JComboBox。
JComboBox<String> colorChooser = new JComboBox<>(colors);
//定义⼀个列表选择框
//JList(Object[] listData)
//构造⼀个 JList,使其显⽰指定数组中的元素。
JList<String> colorList = new JList<>(colors);
/
/定义⼀个8⾏20列的多⾏⽂本框
JTextArea ta = new JTextArea(8, 20);
//定义⼀个40列的单⾏⽂本框
JTextField name = new JTextField(40);
JMenuBar mb = new JMenuBar();
JMenu file = new JMenu("⽂件");
//JMenu(String s)
//构造⼀个新 JMenu,⽤提供的字符串作为其⽂本。
JMenu edit = new JMenu("编辑");
Icon newIcon = new ImageIcon("ico/new.png");
//JMenuItem(String text, Icon icon)
/
/创建带有指定⽂本和图标的 JMenuItem。
JMenuItem newItem = new JMenuItem("新建", newIcon);
Icon saveIcon = new ImageIcon("ico/new.png");
JMenuItem saveItem = new JMenuItem("保存", saveIcon);
Icon exitIcon = new ImageIcon("ico/exit.png");
JMenuItem exitItem = new JMenuItem("退出", exitIcon);
JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("⾃动换⾏");
JMenuItem copyItem = new JMenuItem("复制", new ImageIcon("ico/copy.png"));
JMenuItem pasteItem = new JMenuItem("粘贴", new ImageIcon("ico/paste.png"));
JMenu format = new JMenu("格式");
JMenuItem commentItem = new JMenuItem("注释");
JMenuItem cancelItem = new JMenuItem("取消注释");
//定义⼀个右键菜单,⽤于设定程序的外观风格
JPopupMenu pop = new JPopupMenu();
ButtonGroup flavorGroup = new ButtonGroup();
//创建5个单选按钮,⽤于设定程序的外观风格
idea debugJRadioButtonMenuItem metalItem = new JRadioButtonMenuItem("Metal风格", true);
JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("Nimbus风格");
JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("windows风格");
JRadioButtonMenuItem motifyItem = new JRadioButtonMenuItem("motifyItem风格");
JRadioButtonMenuItem classicItem = new JRadioButtonMenuItem("windows经典风格");
/*------------------下⾯是⽤于执⾏界⾯初始化的init⽅法-------------------------*/
public void init() {
//创建⼀个装载了⽂本框、按钮的JPanel
JPanel bottom = new JPanel();
bottom.add(name);
bottom.add(ok);
f.add(bottom, BorderLayout.SOUTH);//⽤BorderLayout布局管理器,放在最底层
//创建⼀个装载了下拉选择框、三个JCheckBox的JPanel
JPanel checkPanel = new JPanel();
checkPanel.add(colorChooser);
既要加载在⼀个ButtonGroup中,也要加载在checkPanel中
//若去掉bg.add(male);bg.add(female); 则能选两个性别
/
/若去掉 checkPanel.add(male);checkPanel.add(female); 则两个性别RadioButton消失bg.add(male);
bg.add(female);
bg.add(female);
checkPanel.add(male);
checkPanel.add(female);
checkPanel.add(married);
//创建⼀个垂直排列的组件的Box,盛装多⾏⽂本域JPanel
Box topLeft = ateVerticalBox();//创建⼀个从上到下显⽰的Box
//使⽤JScrollPance作为普通组件的JViewPort
JScrollPane taJsp = new JScrollPane(ta);
topLeft.add(taJsp);
topLeft.add(checkPanel);
//创建⼀个⽔平排列组件的Box,盛装topLeft、colorList
Box top = ateHorizontalBox();
top.add(topLeft);
top.add(colorList);
//将Top Box容器添加到窗⼝的中间
f.add(top);
//----------下⾯开始组合菜单,并未菜单添加---------------------
//为newItem设置快捷键,设置快捷键时要使⽤⼤写字母
newItem.KeyStroke('N', InputEvent.CTRL_MASK));
newItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ta.append("⽤户单击了“新建”菜单\n");
}
});
//为file菜单添加菜单项
file.add(newItem);
file.add(saveItem);
file.add(exitItem);
//为exit菜单添加菜单项
edit.add(autoWrap);
//使⽤addSeparator⽅法添加菜单分隔线
edit.addSeparator();
edit.add(copyItem);
edit.add(pasteItem);
//为commentItem组件添加提⽰信息
commentItem.setToolTipText("将从程序代码注释起来!");
//为format菜单添加菜单项
format.add(commentItem);
format.add(cancelItem);
//使⽤添加new JMenuItem(“-”)的⽅式不能添加菜单分隔符
edit.add(new JMenuItem("-"));
//将format菜单组合到eidt菜单中,从⽽形成⼆级菜单
edit.add(format);
//将file、edit菜单添加到mb菜单条中
mb.add(file);
mb.add(edit);
//为f窗⼝设置菜单条
f.setJMenuBar(mb);
//------下⾯开始组合右键菜单,并安装右键菜单-----------------
flavorGroup.add(metalItem);
flavorGroup.add(nimbusItem);
flavorGroup.add(windowsItem);
flavorGroup.add(classicItem);
flavorGroup.add(motifyItem);
pop.add(metalItem);
pop.add(nimbusItem);
pop.add(windowsItem);
pop.add(classicItem);
pop.add(motifyItem);
//为5个风格菜单创建事件
ActionListener flavorListener = new ActionListener() {
ActionListener flavorListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
switch (e.getActionCommand()) {
case "Metal风格":
changeFlavor(1);
break;
case "Nimbus风格":
changeFlavor(2);
break;
case "Windows风格":
changeFlavor(3);
break;
case "Windows经典风格":
changeFlavor(4);
break;
case "Motif风格":
changeFlavor(5);
break;
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
};
/
/为5个风格菜单项添加事件
metalItem.addActionListener(flavorListener);
nimbusItem.addActionListener(flavorListener);
windowsItem.addActionListener(flavorListener);
classicItem.addActionListener(flavorListener);
motifyItem.addActionListener(flavorListener);
//调⽤该⽅法即可设置右键菜单,⽆须使⽤事件机制;
ta.setComponentPopupMenu(pop);
//设置关闭窗⼝时,退出程序
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
//⽅法内部不再嵌套⽅法,⽽是调⽤语句了
}
private void changeFlavor(int flavor) throws Exception {
switch (flavor) {
//设置Metal风格
case 1:
UIManager.setLookAndFeel("javax.al.MetalLookAndFeel");
break;
case 2:
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimusLoolAndFeel");
break;
case 3:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
case 4:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
break;
case 5:
UIManager.setLookAndFeel("com.sun.java.if.MotifLookAndFeel");
break;
}
/
/更新f窗⼝内顶级容器以及内部所有组件的UI
SwingUtilities.ContentPane());
//更新mb菜单条以及内部所有组件的UI

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。