//例8.1 窗口容器
/*
*本例介绍的应用程序创建一个可以移动、改变大小、最大化、可变成图标且可以关闭的窗口
*运行程序可以弹出窗口对象,结果如图所示
*/
import javax.swing.*;
import java.awt.*;
public class JF0 extends JFrame
{
public JF0(String s)
{
super(s); //调用父类JFrame的构造方法,给窗口命名
setBounds(200,200,500,400); //设置窗口位置,窗口大小
setVisible(true); //设置窗口是否可见
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭动作
}
public static void main(String[] args)
{
JF0 d=new JF0("主窗口");
}
}
//例8.2 对话框容器
//创建对话框例子,程序运行结果如图所示
import javax.swing.*;
public class JD extends JDialog
{
public JD(JFrame f,String s)
{
super(f,s); //调用父类JDialog的构造方法,给对话框窗口命名
setBounds(300,300,200,200); //设置对话框窗口大小位置
setVisible(true); //设置对话框窗口是否可见
setModal(false); //设置对话框窗口模式,此为无模式
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
public static void main(String[] args)
{
JF0 f=new JF0("主窗口"); //创建一个主窗口对象,f是实例化JF0类创建的
JD d=new JD(f,"这是一个对话框窗口");//创建一个对话框窗口对象
}
}
//例8.3 面板容器
//创建含有面包窗口的例子,程序运行结果如图所示
import javax.swing.*;
import java.awt.*;
import java.awt.Color;
public class JP1 extends JFrame
{
public JP1(JFrame f,int x,int y,int w,int h)
{
Container c=getContentPane();
//调用getContentPane()方法创建Container内容面板对象c
c.setLayout(null); //设置不采用任何布局方式
c.setBackground(Color.yellow); //设置面包的被解释为黄色
f.add(c); //将内容面板c加入窗口对象f中
JPanel p=new JPanel(); //创建面板对象p
p.setBounds(x,y,w,h); //设置面板p的位置,大小
p.setBackground(Color.blue);//设置面板的背景色为蓝色
c.add(p); //将面板p加入到窗口的内容面板c中
}
public static void main(String[] args)
{ //创建一个JP1类的对象f1,它是一个具有内容面板对象c、
//普通面板p的窗口对象
JP1 f1=new JP1(new JF0("添加面板的窗口"),100,50,200,200);
}
}
//例 8.4 标签组件
//本例应用程序用来创建添加有不同标签的窗口,程序运行结果如图
import javax.swing.*;
import java.awt.*;
public class JL1 extends JFrame
{
private JLabel label;
public JL1(JFrame f,JPanel p)
{
f.add(p); //将面板p加入窗口f中
label=new JLabel("显示文字的标签");//使用文本创建一个标签对象
label.setFont(new Font("Serif",Font.PLAIN,20)); //设置标签字体
label.setToolTipText("这是标签对象"); //设置标签的工具提示
p.add(label); //将标签对象添加到面板对象p上
}
public static void main(String[] args)
{
JL1 f1=new JL1(new JF0("添加标签的窗口"),new JPanel());
}
}
//例8.5 按钮组件
//本例应用程序用来创建添加有不同按钮的窗口,程序运行结果如图
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JB extends JFrame
{
private JButton button1,button2;
public JB(JFrame f,JPanel p)
{
f.add(p); //将面板p加入到窗口f中
button1=new JButton("按钮1"); //创建按钮对象
button1.setFont(new Font("Serif",Font.PLAIN,20));
ImageIcon img1=new ImageIcon("F:/1.jpg");
ImageIcon img2=new ImageIcon("F:/2.gif");
button2=new JButton("按钮2",img2);
button2.setRolloverIcon(img1);
button2.setFont(new Font("Serif",Font.PLAIN,10));
//为组件注册监听器
BHandler h=new BHandler();
button1.addActionListener(h);
button2.addActionListener(h);
//将各种组件添加到内容面板
p.add(button1);
p.add(button2);
}
public static void main(String[] args)
{
JB f1=new JB(new JF0("添加按钮的窗口"),new JPanel());
}
private class BHandler implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
JOptionPane.showMessageDialog(JB.this,"你按了: "+event.getActionCommand());
}
}
}
//例8.6 文本框组件
//本例应用程序用来创建添加有不同文本框的窗口,程序运行结果如图
import javax.swing.*;
import java.awt.*;
public class JT extends JFrame
{
private JTextField t1,t2,t3;
private JPasswordField k1;
public JT(JFrame f,JPanel p)
{
f.add(p); //将面板p加入到窗口f中
p.setLayout(new FlowLayout());
p.setBackground(Color.YELLOW);
t1=new JTextField(10); //创建文本框对象,宽度为10
t2=new JTextField("请输入文本");//创建带有初始文本的文本框对象
t2.setFont(new Font("Serif",Font.PLAIN,12)); //设置字体
t3=new JTextField("不可编辑的文本框",20);
//创建带有初始文本的文本框,宽度为20
t3.setFont(new Font("Serif",Font.PLAIN,12));
t3.setEditable(false); //设置该文本框为不可编辑状态
k1=new JPasswordField("口令",10); //创建密码框
p.add(t1); p.add(t2); p.add(t3); p.add(k1);
}
public static void main(String[] args)
{
JT d=new JT(new JF0("添加文本框的窗口"),new JPanel());
}
}
//例8.7 文本区的组件
//本例应用程序用来创建添加有两个文本区组件的窗口,程序运行结果如图
import java.awt.*;
import javax.swing.*;
public class JTA extends JFrame
{
private JTextArea ta1,ta2,ta3,ta4;
public JTA(JFrame f,JPanel p)
{
f.add(p);
p.setLayout(new GridLayout(4,1,5,5));
ta1=new JTextArea(); //利用不同的构造方法创建文本区对象
ta2=new JTextArea(2,8);
ta3=new JTextArea("3");
ta4=new JTextArea("4",5,10);
ta1.setFont(new Font("Serif",Font.PLAIN,12));
ta2.setFont(new Font("Serif",Font.PLAIN,12));
ta3.setFont(new Font("Serif",Font.PLAIN,12));
ta4.setFont(new Font("Serif",Font.PLAIN,12));
ta1.setText("JTextArea1"); //setText()方法会将原来的内容清除
ta2.append("JTextArea2"); //append()方法会将设置的字符串接在原来文本区文字之后
ta4.setTabSize(10); //设置[Tab]键的跳离距离方法
ta4.setLineWrap(true); //自动换行功能方法
ta4.setWrapStyleWord(true); //断行不断字功能方法
p.add(new JScrollPane(ta1)); p.add(new JScrollPane(ta2));
p.add(new JScrollPane(ta3)); p.add(new JScrollPane(ta4));
}
public static void main(String[] args)
{
JTA d=new JTA(new JF0("添加文本区的窗口"),new JPanel());
}
}
//例8.8 单选按钮组件
//本例应用程序用来创建包含3个颜色单选按钮的窗口,根据选择可以显示不同的颜色
//程序运行结果如图
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JR extends JFrame
{
private JPanel p1,p2;
private JRadioButton red,green,blue;
private ButtonGroup buttonGroup;
public JR(JFrame f)
{
Container c=getContentPane(); //创建内容面板对象c
f.add(c);
p1=new JPanel(); //创建一个用来显示颜色的面板对象
p1.setBackground(Color.RED);
c.add(p1,BorderLayout.CENTER);
buttonGroup=new ButtonGroup(); //创建单选按钮组
red=new JRadioButton("红色",true);
green=new JRadioButton("绿色");
blue=new JRadioButton("蓝色");
red.setFont(new Font("Serif",Font.PLAIN,14)); //设置字体
green.setFont(new Font("Serif",Font.PLAIN,14));
blue.setFont(new Font("Serif",Font.PLAIN,14));
buttonGroup.add(red); buttonGroup.add(green); buttonGroup.add(blue);
//添加选项按钮到组中
rHandler h=new rHandler(); //创建监听器
red.addItemListener(h); blue.addItemListener(h);
green.addItemListener(h);
p2=new JPanel(); //创建存放单选按钮的面板
p2.add(red); p2.add(green); p2.add(blue);
c.add(p2,BorderLayout.SOUTH);
}
public static void main(String args[])
{
JR application=new JR(new JF0("通过单选框选择颜色的窗口"));
}
private class rHandler implements ItemListener
{
public void itemStateChanged(ItemEvent event){
if(red.isSelected()) p1.setBackground(Color.red);
else if(green.isSelected()) p1.setBackground(Color.GREEN);
else p1.setBackground(Color.BLUE);
}
}
}
//例8.9 复选框
//本例应用程序用来创建包含两个字体复选按钮的窗口,
//根据选择可以改变窗口标签对象的字体
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Jcb extends JFrame
{
private JLabel label; private JCheckBox b,i;
public Jcb(JFrame f)
{
Container c=getContentPane(); c.setLayout(new FlowLayout());
c.setBackground(Color.YELLOW);
f.add(c);
label=new JLabel("请注意观察字体的变化");
label.setFont(new Font("Serif",Font.PLAIN,20));//创建标签对象,并设置字体
c.add(label);
b=new JCheckBox("粗体"); //创建复选框
i=new JCheckBox("斜体");
b.setFont(new Font("Serif",Font.PLAIN,16));
i.setFont(new Font("Setif",Font.PLAIN,16));
b.setBackground(Color.YELLOW);
i.setBackground(Color.YELLOW);
CBHandler h=new CBHandler(); //创建监听器对象
b.addItemListener(h); i.addItemListener(h); //注册监听器
c.add(b); c.add(i);
}
public static void main(String args[])
{
Jcb d=new Jcb(new JF0("包含复选框的窗口"));
}
private class CBHandler implements ItemListener
{
private int vb=Font.PLAIN;
private int vi=Font.PLAIN;
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==b)
vb=b.isSelected()?Font.BOLD:Font.PLAIN;
if(e.getSource()==i)
vi=i.isSelected()?Font.BOLD:Font.PLAIN;
label.setFont(new Font("Serif",vb+vi,20));
}
}
}
//例8.10 下拉列表组件
//本例应用程序用来创建一个下拉列表组件的窗口
//根据选择下拉列表的菜单可以显示不同的文字,程序运行结果如图
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Jlb extends JFrame
{
private JComboBox lbk;
private JLabel label;
private String names[]={"北京大学","复旦大学","南京大学","武汉大学"};
public Jlb(JFrame f)
{
Container c=getContentPane();
c.setBackground(Color.YELLOW);
f.add(c);
lbk=new JComboBox(names); //创建下拉列表对象
lbk.setMaximumRowCount(4); //设置下拉列表所能显示的列表项的最大数目
lbk.setSelectedIndex(0); //设置默认的选择项
lbk.setFont(new Font("Serif",Font.PLAIN,14)); //设置字体
lbk.addItemListener(new lbHandler()); //注册监听器
label=new JLabel("你选择了:北京大学");
label.setFont(new Font("Serif",Font.PLAIN,14));
c.add(lbk,BorderLayout.NORTH);
c.add(label,BorderLayout.CENTER);
}
public static void main(String []args)
{
Jlb d=new Jlb(new JF0("下拉列表窗口"));
}
private class lbHandler implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if(e.getStateChange()==e.SELECTED)
{
label.setText("你选择了:"+names[lbk.getSelectedIndex()]);
}
}
}
}