关于swing中的基本组件(介绍及应用)
关于swing中的基本组件(介绍及应用):1.组件的介绍1.JFrame一个普通的窗口,作为顶层容器2.JDialog对话框3.JPanel面板容器组件4.JScrollPane带滚动条的,可以水平和垂直滚动的面板组件5.JMenuBar菜单栏6.JPopupMenu弹出菜单7.JLabel标签8.JButton按钮9.JRadioButton单选按钮10.JCheckBox复选框11.JText
·
关于swing中的基本组件(介绍及应用):
1.组件的介绍
1.JFrame 一个普通的窗口,作为顶层容器
2.JDialog 对话框
3.JPanel 面板容器组件
4.JScrollPane 带滚动条的,可以水平和垂直滚动的面板组件
5.JMenuBar 菜单栏
6.JPopupMenu 弹出菜单
7.JLabel 标签
8.JButton 按钮
9.JRadioButton 单选按钮
10. JCheckBox 复选框
11.JTextField 文本框
12.JTextArea 文本区域
13.JComboBox 下拉列表框
14.JList 列表.
15.JRadioButtonMenuItem 是一个菜单项,它是一组菜单项的一部分,其中只能选择组中的一个项目。
16.ButtonGroup 按钮组
2.组件的建立
我们需要测试这些组件,就需要创建出来。
建立组件的代码:
JFrame f=new JFrame("测试swing基本组件");
//声明菜单相关组件
JMenuBar menuBar=new JMenuBar();//菜单条
JMenu fileMenu=new JMenu("文件");
JMenu editMenu=new JMenu("编辑");
JMenuItem auto=new JMenuItem("自动换行");
JMenuItem copy=new JMenuItem("复制",new ImageIcon("img\\1.jpg"));//图片太大,没有显示出来
JMenuItem paste=new JMenuItem("黏贴");
JMenu formatMenu=new JMenu("格式");
JMenuItem comment=new JMenuItem("注释");
JMenuItem cancelComment=new JMenuItem("取消注释");
//声明文本域
JTextArea ta=new JTextArea(8,20);
String[]colors={"红色","绿色","蓝色"};
//声明列表框 使用重载方法传入字符串数组
JList<String>colorList=new JList<>(colors);
//声明选择相关组件
JComboBox<String>colorSelect=new JComboBox<>();//下拉选择框
ButtonGroup bg=new ButtonGroup();//按钮组
JRadioButton male=new JRadioButton("男",false);//单选框
JRadioButton female=new JRadioButton("女",true);
JCheckBox isMarried=new JCheckBox("是否已婚?",true);//复选框
//声明底部
JTextField tf=new JTextField(40);
JButton ok=new JButton("确定",new ImageIcon("img\\1.jpg"));
//声明右键菜单
JPopupMenu jPopupMenu=new JPopupMenu();
ButtonGroup poupButtonBg=new ButtonGroup();
JRadioButtonMenuItem metalItem=new JRadioButtonMenuItem("Metal风格");//单选菜单项
JRadioButtonMenuItem nimbusItem=new JRadioButtonMenuItem("Nimbus风格");
JRadioButtonMenuItem windowsItem=new JRadioButtonMenuItem("Windows风格",true);//true是默认选中
JRadioButtonMenuItem windowsClassicItem=new JRadioButtonMenuItem("Windows经典风格");
JRadioButtonMenuItem motifItem=new JRadioButtonMenuItem("Motif风格");
3.改变界面风格
除了基本组件,还创建了一个改变界面风格的方法,改变风格放入右击菜单中,只需添加监听器就可以起到改变风格的作用:
//定义一个方法用于改变界面
private void changeFlavor(String command) throws Exception{
switch(command){
case "Metal风格":
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
break;
case "Nimbus风格":
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
break;
case "Windows风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
case "Windows经典风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
break;
case "Motif风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
break;
}
//刷新组件外观
SwingUtilities.updateComponentTreeUI(f.getContentPane());
SwingUtilities.updateComponentTreeUI(menuBar);
SwingUtilities.updateComponentTreeUI(jPopupMenu);
}
4.组装组件
创建组件过后我们需要组件起来,从小到大,一步步的来
组装代码:
//初始化界面
public void init(){
//组装视图
//组装底部
JPanel bottomPanel=new JPanel();
bottomPanel.add(tf);
bottomPanel.add(ok);
f.add(bottomPanel, BorderLayout.SOUTH);
//组装选择相关组件
JPanel selectPanel=new JPanel();
colorSelect.addItem("红色");
colorSelect.addItem("蓝色");
colorSelect.addItem("绿色");
selectPanel.add(colorSelect);
bg.add(male);
bg.add(female);
selectPanel.add(male);
selectPanel.add(female);
selectPanel.add(isMarried);
//组建文本域和选择相关组件
Box topLeft=Box.createVerticalBox();
topLeft.add(ta);
topLeft.add(selectPanel);
//组装顶部
Box top=Box.createHorizontalBox();
top.add(topLeft);
top.add(colorList);
f.add(top);
//组装顶部菜单
formatMenu.add(comment);
formatMenu.add(cancelComment);
editMenu.add(auto);
editMenu.addSeparator();//横线
editMenu.add(copy);
editMenu.add(paste);
editMenu.addSeparator();//横线
editMenu.add(formatMenu);
menuBar.add(fileMenu);
menuBar.add(editMenu);
f.setJMenuBar(menuBar);//显示菜单条
//组装右键菜单
poupButtonBg.add(metalItem);
poupButtonBg.add(windowsClassicItem);
poupButtonBg.add(windowsItem);
poupButtonBg.add(nimbusItem);
poupButtonBg.add(motifItem );
ActionListener listener=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//当前选择的是哪一个风格
String actionCommand=e.getActionCommand();
try {
changeFlavor(actionCommand);
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
metalItem.addActionListener(listener);
windowsClassicItem.addActionListener(listener);
windowsItem.addActionListener(listener);
nimbusItem.addActionListener(listener);
motifItem.addActionListener(listener);
jPopupMenu.add(metalItem);
jPopupMenu.add(windowsClassicItem);
jPopupMenu.add(windowsItem);
jPopupMenu.add(nimbusItem);
jPopupMenu.add(motifItem);
//不需要鼠标监听事件了
ta.setComponentPopupMenu(jPopupMenu);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
完整的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SwingTest {
JFrame f=new JFrame("测试swing基本组件");
//声明菜单相关组件
JMenuBar menuBar=new JMenuBar();//菜单条
JMenu fileMenu=new JMenu("文件");
JMenu editMenu=new JMenu("编辑");
JMenuItem auto=new JMenuItem("自动换行");
JMenuItem copy=new JMenuItem("复制",new ImageIcon("img\\1.jpg"));//图片太大,没有显示出来
JMenuItem paste=new JMenuItem("黏贴");
JMenu formatMenu=new JMenu("格式");
JMenuItem comment=new JMenuItem("注释");
JMenuItem cancelComment=new JMenuItem("取消注释");
//声明文本域
JTextArea ta=new JTextArea(8,20);
String[]colors={"红色","绿色","蓝色"};
//声明列表框 使用重载方法传入字符串数组
JList<String>colorList=new JList<>(colors);
//声明选择相关组件
JComboBox<String>colorSelect=new JComboBox<>();//下拉选择框
ButtonGroup bg=new ButtonGroup();//按钮组
JRadioButton male=new JRadioButton("男",false);//单选框
JRadioButton female=new JRadioButton("女",true);
JCheckBox isMarried=new JCheckBox("是否已婚?",true);//复选框
//声明底部
JTextField tf=new JTextField(40);
JButton ok=new JButton("确定",new ImageIcon("img\\1.jpg"));
//声明右键菜单
JPopupMenu jPopupMenu=new JPopupMenu();
ButtonGroup poupButtonBg=new ButtonGroup();
JRadioButtonMenuItem metalItem=new JRadioButtonMenuItem("Metal风格");//单选菜单项
JRadioButtonMenuItem nimbusItem=new JRadioButtonMenuItem("Nimbus风格");
JRadioButtonMenuItem windowsItem=new JRadioButtonMenuItem("Windows风格",true);//true是默认选中
JRadioButtonMenuItem windowsClassicItem=new JRadioButtonMenuItem("Windows经典风格");
JRadioButtonMenuItem motifItem=new JRadioButtonMenuItem("Motif风格");
//初始化界面
public void init(){
//组装视图
//组装底部
JPanel bottomPanel=new JPanel();
bottomPanel.add(tf);
bottomPanel.add(ok);
f.add(bottomPanel, BorderLayout.SOUTH);
//组装选择相关组件
JPanel selectPanel=new JPanel();
colorSelect.addItem("红色");
colorSelect.addItem("蓝色");
colorSelect.addItem("绿色");
selectPanel.add(colorSelect);
bg.add(male);
bg.add(female);
selectPanel.add(male);
selectPanel.add(female);
selectPanel.add(isMarried);
//组建文本域和选择相关组件
Box topLeft=Box.createVerticalBox();
topLeft.add(ta);
topLeft.add(selectPanel);
//组装顶部
Box top=Box.createHorizontalBox();
top.add(topLeft);
top.add(colorList);
f.add(top);
//组装顶部菜单
formatMenu.add(comment);
formatMenu.add(cancelComment);
editMenu.add(auto);
editMenu.addSeparator();//横线
editMenu.add(copy);
editMenu.add(paste);
editMenu.addSeparator();//横线
editMenu.add(formatMenu);
menuBar.add(fileMenu);
menuBar.add(editMenu);
f.setJMenuBar(menuBar);//显示菜单条
//组装右键菜单
poupButtonBg.add(metalItem);
poupButtonBg.add(windowsClassicItem);
poupButtonBg.add(windowsItem);
poupButtonBg.add(nimbusItem);
poupButtonBg.add(motifItem );
ActionListener listener=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//当前选择的是哪一个风格
String actionCommand=e.getActionCommand();
try {
changeFlavor(actionCommand);
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
metalItem.addActionListener(listener);
windowsClassicItem.addActionListener(listener);
windowsItem.addActionListener(listener);
nimbusItem.addActionListener(listener);
motifItem.addActionListener(listener);
jPopupMenu.add(metalItem);
jPopupMenu.add(windowsClassicItem);
jPopupMenu.add(windowsItem);
jPopupMenu.add(nimbusItem);
jPopupMenu.add(motifItem);
//不需要鼠标监听事件了
ta.setComponentPopupMenu(jPopupMenu);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
new SwingTest().init();
}
//定义一个方法用于改变界面
private void changeFlavor(String command) throws Exception{
switch(command){
case "Metal风格":
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
break;
case "Nimbus风格":
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
break;
case "Windows风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
case "Windows经典风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
break;
case "Motif风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
break;
}
//刷新组件外观
SwingUtilities.updateComponentTreeUI(f.getContentPane());
SwingUtilities.updateComponentTreeUI(menuBar);
SwingUtilities.updateComponentTreeUI(jPopupMenu);
}
}
运行结果:
没有点击的界面:
右击并改变风格的图片:
更多推荐
已为社区贡献1条内容
所有评论(0)