sample27_5.java
来自「Java SE 6.0前27-31章示的示例代码,简单易学」· Java 代码 · 共 149 行
JAVA
149 行
package wyf.jc;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import javax.swing.plaf.metal.*;
//定义该类继承自JFrame
public class Sample27_5 extends JFrame implements ActionListener
{
//创建各种控件
JButton jb=new JButton("按扭");
JTextField jtf=new JTextField();
JRadioButton[] jrb={new JRadioButton("单选按扭1"),new JRadioButton("单选按扭2")};
JCheckBox[] jcb={new JCheckBox("复选框1"),new JCheckBox("复选框2")};
//创建菜单数组
JMenu[] jm={new JMenu("外观感觉"),new JMenu("风格")};
//创建单选菜单项数组
JRadioButtonMenuItem[] jrbmi={new JRadioButtonMenuItem("java外观感觉",true),
new JRadioButtonMenuItem("Windows外观感觉"),new JRadioButtonMenuItem("Motif外观感觉"),
new JRadioButtonMenuItem("海洋场景",true),new JRadioButtonMenuItem("普通场景")};
//创建菜单栏
JMenuBar jmb=new JMenuBar();
//创建按钮组数组
ButtonGroup[] bg={new ButtonGroup(),new ButtonGroup(),new ButtonGroup()};
//创建对应各个外观风格的全称类名字符串
String javaMetal="javax.swing.plaf.metal.MetalLookAndFeel";
String windows="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
String motif="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
public Sample27_5()
{
//将菜单添加进菜单栏
jmb.add(jm[0]);
jmb.add(jm[1]);
//将菜单项添加进各个菜单
for(int i=0;i<jrbmi.length;i++)
{
if(i<3)
{//选择外观风格的菜单项
jm[0].add(jrbmi[i]);
bg[0].add(jrbmi[i]);
}
else
{//选择场景的菜单项
jm[1].add(jrbmi[i]);
bg[1].add(jrbmi[i]);
}
//为菜单项注册动作事件监听器
jrbmi[i].addActionListener(this);
}
//将菜单栏添加进窗体
this.setJMenuBar(jmb);
//设置窗体的布局管理器
this.setLayout(null);
//对各个控件进行设置
for(int i=0;i<jrb.length;i++)
{
//设置单选按钮与复选框的大小位置
jrb[i].setBounds(10+i*150,10,120,26);
jcb[i].setBounds(10+i*150,40,120,26);
//将单选按钮与复选框添加进窗体中
this.add(jrb[i]);
this.add(jcb[i]);
//为单选按钮编组
bg[2].add(jrb[i]);
}
//设置文本框的大小位置并将其添加进窗体中
jtf.setBounds(10,70,230,26);
this.add(jtf);
//设置按钮的大小位置并将其添加进窗体中
jb.setBounds(250,70,80,26);
this.add(jb);
//设置窗口的标题、大小位置以及可见性
this.setTitle("动态修改外观风格示例");
this.setResizable(false);
this.setBounds(100,100,350,180);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jrbmi[0])
{//点击java外观感觉菜单项
this.setLAF(javaMetal);
jm[1].setEnabled(true);
}
else if(e.getSource()==jrbmi[1])
{//点击Windows外观感觉菜单项
this.setLAF(windows);
jm[1].setEnabled(false);
}
else if(e.getSource()==jrbmi[2])
{//点击Motif外观感觉菜单项
this.setLAF(motif);
jm[1].setEnabled(false);
}
else if(e.getSource()==jrbmi[3])
{//点击海洋场景菜单项
this.setTheme(0);
}
else if(e.getSource()==jrbmi[4])
{//点击普通场景菜单项
this.setTheme(1);
}
}
//设置外观风格的方法
public void setLAF(String s)
{
try
{
//设置程序的外观风格
UIManager.setLookAndFeel(s);
//更新控件的外观
SwingUtilities.updateComponentTreeUI(this);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//设置场景的方法
public void setTheme(int i)
{
try
{
//设置场景
if(i==0)
{
MetalLookAndFeel.setCurrentTheme(new OceanTheme());
}
else
{
MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
}
//更新控件的外观
SwingUtilities.updateComponentTreeUI(this);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
//创建Sample27_5窗体
new Sample27_5();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?