实例306 JFrame框架的应用
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
public
class JFrame1
implements ActionListener {
public JFrame1() {
JFrame f
=
new JFrame(
"框架实例");
Container contentPane
= f.getContentPane();
JButton b
=
new JButton(
"点击我可以创建一个新窗口");
b.addActionListener(
this);
contentPane.add(b);
f.pack();
f.show();
// 使JFrame变成可看见的(Visible)
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
void actionPerformed(ActionEvent e) {
JFrame newf
=
new JFrame();
// 产生一个没有标题的JFrame
newf.setSize(
200,
200);
newf.show();
}
public
static
void main(String[] args) {
new JFrame1();
}
}
实例307 Border的使用
import java.awt.Color;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
public
class BorderTest {
public
static
void main(String[] args) {
JFrame f
=
new JFrame(
"Border");
Container content
= f.getContentPane();
JButton b
=
new JButton();
b.setBorder(BorderFactory.createLineBorder(Color.blue,
10));
//createLineBorder方法指定边界的颜色与宽度.
content.add(b);
f.setSize(
200,
150);
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例308 使用Icon组件显示一张图片
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public
class ImageIconTest {
public
static
void main(String[] args) {
byte[] image
= null;
JFrame f
=
new JFrame(
"ImageIconTest");
Container contentPane
= f.getContentPane();
/*
* 在打开文件读文件的过程中可能会发生IOException,因此在下面的程序中用 try与catch将此区段包起来。
*/
try {
File file
=
new File(
".\\icon\\kaixin.gif");
// 利用文件kaixin.gif建立一个File组件。
int size
= (
int) file.length();
// 并求出此文件的长度。
FileInputStream in
=
new FileInputStream(file);
// 将文件组件放入FileInputStream中。
image
=
new
byte[size];
in.read(image);
// 将数据文件读进byte array中。
}
catch (IOException e) {
System.err.println(
"File open falure:"
+ e.getMessage());
}
Icon icon
=
new ImageIcon(image);
JLabel label
=
new JLabel(icon, JLabel.CENTER);
contentPane.add(label);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例309 Icon接口的应用
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public
class IconTest
implements Icon {
int height
=
60;
// 定义一个整型常量
int width
=
100;
public
int getIconHeight() {
return height;
}
public
int getIconWidth() {
return width;
}
public
void paintIcon(Component c, Graphics g,
int x,
int y) {
g.drawRect(x, y, width, height);
g.fillRect(x, y, width, height);
g.setColor(Color.blue);
}
public
static
void main(String[] args) {
JFrame f
=
new JFrame(
"IconTest");
// 设置框架的标题
Container contentPane
= f.getContentPane();
Icon icon
=
new IconTest();
JLabel label
=
new JLabel(icon, JLabel.CENTER);
contentPane.add(label);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例310 JLabel组件
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public
class IconTest
implements Icon {
int height
=
60;
// 定义一个整型常量
int width
=
100;
public
int getIconHeight() {
return height;
}
public
int getIconWidth() {
return width;
}
public
void paintIcon(Component c, Graphics g,
int x,
int y) {
g.drawRect(x, y, width, height);
g.fillRect(x, y, width, height);
g.setColor(Color.blue);
}
public
static
void main(String[] args) {
JFrame f
=
new JFrame(
"IconTest");
// 设置框架的标题
Container contentPane
= f.getContentPane();
Icon icon
=
new IconTest();
JLabel label
=
new JLabel(icon, JLabel.CENTER);
contentPane.add(label);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例311 Icon应用到JLabel中
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public
class JLabelDemo2 {
public
static
void main(String[] args) {
JFrame f
=
new JFrame(
"JLabelDemo2");
Container contentPane
= f.getContentPane();
Icon icon
=
new ImageIcon(
".\\icons\\hello.jpg");
JLabel label
=
new JLabel(
"Hello", icon, JLabel.CENTER);
// 产生一个具有文字与Icon的JLabel组件,
// 并将此文字与Icon置于JLabel的中间。
label.setHorizontalTextPosition(JLabel.CENTER);
// 将文字置于Icon的中间,若没有设置此项,默认
// 值为文字在Icon的右边。
label.setVerticalTextPosition(JLabel.TOP);
// 将文字置于Icon的上面,若没有设置此项,默认值为中间排列
// 若你在此再加入一行label.setIconTextGap(10);将会加大文字"Hello"与Icon间的间距。
contentPane.add(label);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例312 JButton的使用
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public
class JButtonDemo1 {
public
static
void main(String[] args) {
JFrame f
=
new JFrame(
"JButtonDemo1");
Container contentPane
= f.getContentPane();
JButton b
=
new JButton(
"按我",
new ImageIcon(
".\\icons\\hand.jpg"));
//如果没有设置文字的位置,系统默认值会将文字置于图形的右边中间位置。
b.setHorizontalTextPosition(JButton.CENTER);
b.setVerticalTextPosition(JButton.BOTTOM);
contentPane.add(b);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例313 在JButton上设置快捷键
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public
class JButtonDemo3
implements ActionListener {
public JButtonDemo3() {
JFrame f
=
new JFrame(
"JButtonDemo3");
//创建一个JFrame对象,并设置JFrame的标题
Container contentPane
= f.getContentPane();
JButton jb
=
new JButton(
"[o]打开新窗口");
//初始化一个按钮
jb.setMnemonic(
'o');
//设置快捷键为o
jb.addActionListener(
this);
//添加监听器
contentPane.add(jb);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
//添加窗口监听器
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
void actionPerformed(ActionEvent e) {
JFrame jf
=
new JFrame(
"新窗口");
//建立一个新的窗口,初始化标题为“新窗口”
JLabel label
=
new JLabel(
"这是新窗口");
//定义一个标签
label.setHorizontalAlignment(JLabel.CENTER);
jf.getContentPane().add(label);
jf.setSize(
100,
100);
jf.show();
}
public
static
void main(String[] args) {
new JButtonDemo3();
}
}
实例314 设置默认按钮
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public
class JButtonDemo4 {
public JButtonDemo4() {
JFrame f
=
new JFrame(
"JButtonDemo4");
//创建一个JFrame对象,并设置它的标题为"JButtonDemo4"
Container contentPane
= f.getContentPane();
contentPane.setLayout(
new GridLayout(
1,
2));
JButton b1
=
new JButton(
"Open Text window");
//定义一个按钮组件
JButton b2
=
new JButton(
"Open Image window");
b1.setMnemonic(
'T');
b2.setMnemonic(
'I');
f.getRootPane().setDefaultButton(b1);
b1.addActionListener(
//添加监听器
new ActionListener() {
public
void actionPerformed(ActionEvent e) {
JFrame newf
=
new JFrame(
"新窗口");
JLabel label
=
new JLabel(
"这是文字窗口");
label.setHorizontalAlignment(JLabel.CENTER);
newf.getContentPane().add(label);
newf.setSize(
200,
200);
newf.show();
}
});
b2.addActionListener(
//添加监听器
new ActionListener() {
public
void actionPerformed(ActionEvent e) {
JFrame newf
=
new JFrame(
"新窗口");
//创建一个JFrame的对象
JLabel label
=
new JLabel(
new ImageIcon(
".\\icons\\address1.jpg"));
//定义一个标签,向这个标签中加入一张图片
label.setHorizontalAlignment(JLabel.CENTER);
newf.getContentPane().add(label);
newf.setSize(
200,
200);
//设置窗口的大小
newf.show();
}
});
//将这两个按钮添加到面板中
contentPane.add(b1);
contentPane.add(b2);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
static
void main(String[] args) {
new JButtonDemo4();
}
}
实例315 使用JCheckBox组件
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public
class JCheckBoxDemo1 {
public
static
void main(String[] args) {
JFrame f
=
new JFrame(
"JCheckBoxDemo1");
// 创建一个JFrame实例对象
Container contentPane
= f.getContentPane();
// 定义一个容器
contentPane.setLayout(
new GridLayout(
2,
1));
// 设置它的布局
JPanel p1
=
new JPanel();
// 定义一个面板对象
p1.setLayout(
new GridLayout(
1,
3));
// 设置这个面板的布局
p1.setBorder(BorderFactory.createTitledBorder(
"你想要吃什么菜呢?"));
// 定义3个JCheckBox复选框选项
JCheckBox c1
=
new JCheckBox(
"鱼香肉丝");
JCheckBox c2
=
new JCheckBox(
"红烧鱼");
JCheckBox c3
=
new JCheckBox(
"小葱拌豆腐");
p1.add(c1);
p1.add(c2);
p1.add(c3);
JPanel p2
=
new JPanel();
p2.setLayout(
new GridLayout(
2,
1));
p2.setBorder(BorderFactory.createTitledBorder(
"以下为JCheckBox的图形示范:"));
// 创建两个JCheckBox的图形对象
JCheckBox c4
=
new JCheckBox(
"图形1",
new ImageIcon(
".\\icons\\x.jpg"));
JCheckBox c5
=
new JCheckBox(
"图形2",
new ImageIcon(
".\\icons\\x.jpg"));
// 将这两个图形的对象添加到面板对象p2中
p2.add(c4);
p2.add(c5);
contentPane.add(p1);
contentPane.add(p2);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
// 添加一个窗口监听
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例316 JCheckBox事件处理
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
//JCheckBox事件处理
public
class JCheckBoxDemo2
implements ItemListener {
JFrame f
= null;
JCheckBox c4
= null;
JCheckBox c5
= null;
JCheckBoxDemo2() {
f
=
new JFrame(
"JCheckBoxDemo2");
// 创建一个JFrame实例对象
Container contentPane
= f.getContentPane();
// 定义一个容器
contentPane.setLayout(
new GridLayout(
2,
1));
// 设置窗口的布局
JPanel p1
=
new JPanel();
// 创建一个面板对象p1
p1.setLayout(
new GridLayout(
1,
3));
p1.setBorder(BorderFactory.createTitledBorder(
"您最喜欢去哪旅游呢?"));
JCheckBox c1
=
new JCheckBox(
"长白山");
JCheckBox c2
=
new JCheckBox(
"北京");
JCheckBox c3
=
new JCheckBox(
"吉林");
p1.add(c1);
p1.add(c2);
p1.add(c3);
JPanel p2
=
new JPanel();
p2.setLayout(
new GridLayout(
2,
1));
p2.setBorder(BorderFactory.createTitledBorder(
"您喜欢哪种程序语言,喜欢的请打勾:"));
c4
=
new JCheckBox(
"JAVA",
new ImageIcon(
".\\icons\\x.jpg"));
c5
=
new JCheckBox(
"C++",
new ImageIcon(
".\\icons\\x.jpg"));
c4.addItemListener(
this);
// 对JCheckBox的对象c4进行监听
c5.addItemListener(
this);
// 对JCheckBox的对象c5进行监听
p2.add(c4);
p2.add(c5);
contentPane.add(p1);
contentPane.add(p2);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
// 创建一个窗口监听器
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
void itemStateChanged(ItemEvent e) {
if (e.getStateChange()
== e.SELECTED) {
if (e.getSource()
== c4)
c4.setIcon(
new ImageIcon(
".\\icons\\r.jpg"));
if (e.getSource()
== c5)
c5.setIcon(
new ImageIcon(
".\\icons\\r.jpg"));
}
else {
if (e.getSource()
== c4)
c4.setIcon(
new ImageIcon(
".\\icons\\x.jpg"));
if (e.getSource()
== c5)
c5.setIcon(
new ImageIcon(
".\\icons\\x.jpg"));
}
}
public
static
void main(String args[]) {
new JCheckBoxDemo2();
}
}
实例317 JRadioButton的使用
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
//JRadioButton的使用
public
class JRadioButtonDemo1
implements ItemListener {
JFrame f
= null;
JRadioButton r4
= null;
JRadioButton r5
= null;
JRadioButtonDemo1() {
f
=
new JFrame(
"JRadioButtonDemo1");
// 创建一个JFrame的对象
Container contentPane
= f.getContentPane();
// 创建一个容器
contentPane.setLayout(
new GridLayout(
2,
1));
// 设置这个窗口的布局
JPanel p1
=
new JPanel();
// 创建一个面板对象p1
p1.setLayout(
new GridLayout(
1,
3));
// 设置布局管理器的格式
p1.setBorder(BorderFactory.createTitledBorder(
"你想要吃什么菜呢?"));
// 定义3个JRadioButton单选按钮
JRadioButton r1
=
new JRadioButton(
"鱼香肉丝");
JRadioButton r2
=
new JRadioButton(
"红烧鱼");
JRadioButton r3
=
new JRadioButton(
"小葱拌豆腐");
p1.add(r1);
p1.add(r2);
p1.add(r3);
JPanel p2
=
new JPanel();
p2.setLayout(
new GridLayout(
2,
1));
// 设置2个JRadioButton单选按钮,并将这两个单选按钮使用图片代替
p2.setBorder(BorderFactory.createTitledBorder(
"您喜欢哪种程序语言? 喜欢的请打勾"));
r4
=
new JRadioButton(
"JAVA",
new ImageIcon(
".\\icons\\x.jpg"));
r5
=
new JRadioButton(
"C++",
new ImageIcon(
".\\icons\\x.jpg"));
r4.addItemListener(
this);
r5.addItemListener(
this);
p2.add(r4);
p2.add(r5);
contentPane.add(p1);
contentPane.add(p2);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
// 添加一个窗口监听器
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
void itemStateChanged(ItemEvent e) {
if (e.getStateChange()
== e.SELECTED)
// 判断当前的状态
{
if (e.getSource()
== r4)
r4.setIcon(
new ImageIcon(
".\\icons\\r.jpg"));
if (e.getSource()
== r5)
r5.setIcon(
new ImageIcon(
".\\icons\\r.jpg"));
}
else {
if (e.getSource()
== r4)
r4.setIcon(
new ImageIcon(
".\\icons\\x.jpg"));
if (e.getSource()
== r5)
r5.setIcon(
new ImageIcon(
".\\icons\\x.jpg"));
}
}
public
static
void main(String args[]) {
new JRadioButtonDemo1();
}
}
实例318 JComboBox的使用
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public
class JComboBoxDemo1 {
public
static
void main(String[] args) {
JFrame f
=
new JFrame(
"JComboBoxDemo1");
// 创建一个JFrame对象
Container contentPane
= f.getContentPane();
// 定义一个容器
contentPane.setLayout(
new GridLayout(
1,
2));
String[] s
= {
"中国",
"日本",
"美国",
"英国",
"法国",
"台湾",
"澳洲",
"韩国" };
// 定义一个字符串数组,并将其初始化
Vector v
=
new Vector();
v.addElement(
"Nokia N80");
v.addElement(
"Nokia 8250");
v.addElement(
"Motorola v8088");
v.addElement(
"Motorola v3");
v.addElement(
"Panasonic 8850");
v.addElement(
"其它");
JComboBox combo1
=
new JComboBox(s);
// 定义一个JComboBox对象
combo1.addItem(
"中国");
// 利用JComboBox类所提供的addItem()方法,加入一个项目到此JComboBox中。
combo1.setBorder(BorderFactory.createTitledBorder(
"你最喜欢到哪个国家玩呢?"));
JComboBox combo2
=
new JComboBox(v);
combo2.setBorder(BorderFactory.createTitledBorder(
"你最喜欢哪一种手机呢?"));
contentPane.add(combo1);
contentPane.add(combo2);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
// 添加窗口监听器
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例319 利用ComboModel构造JComboBox
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.AbstractListModel;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
//利用ComboModel构造JComboBox
public
class JComboBoxDemo2 {
String[] s
= {
"中国",
"日本",
"美国",
"英国",
"法国",
"台湾",
"澳洲",
"韩国" };
// 定义一个字符串数组,并将其初始化
public JComboBoxDemo2() {
JFrame f
=
new JFrame(
"JComboBox2");
// 创建一个JFrame对象
Container contentPane
= f.getContentPane();
// 定义一个容器
ComboBoxModel mode
=
new UserDefineComboBoxModel();
//创建一个ComboBoxModel对象
JComboBox combo
=
new JComboBox(mode);
//定义一个JComboBox对象
combo.setBorder(BorderFactory.createTitledBorder(
"你最喜欢到哪个国家去玩?"));
contentPane.add(combo);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
//添加一个窗口监听器
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
static
void main(String[] args) {
new JComboBoxDemo2();
}
class UserDefineComboBoxModel
extends AbstractListModel
implements
ComboBoxModel {
String item
= null;
public Object getElementAt(
int index) {
return s[index
++];
}
//由于继承AbstractListModel抽象类。因此我们分别在程序中实作了getElementAt()与getSize()方法。
public
int getSize() {
return s.length;
}
//由于我们实现了ComboBoxModel interface.因此我们必须在程序中实作setSelectedItem()与getSelectedItem()方法.
public
void setSelectedItem(Object anItem) {
item
= (String) anItem;
}
public Object getSelectedItem() {
return item;
}
}
}
实例320 DefaultComboBoxModel的使用
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
//DefaultComboBoxModel
public
class JComboBoxDemo3 {
String[] s
= {
"中国",
"日本",
"美国",
"英国",
"法国",
"台湾",
"澳洲",
"韩国" };
public JComboBoxDemo3() {
JFrame f
=
new JFrame(
"JComboBox3");
// 创建一个JFrame对象
Container contentPane
= f.getContentPane();
// 定义一个Container容器
ComboBoxModel mode
=
new AModel();
// 创建一个ComboBoxModel对象
JComboBox combo
=
new JComboBox(mode);
combo.setBorder(BorderFactory.createTitledBorder(
"您最喜欢到哪个国家玩呢?"));
contentPane.add(combo);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
// 添加一个窗口监听器
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
static
void main(String[] args) {
new JComboBoxDemo3();
}
class AModel
extends DefaultComboBoxModel {
AModel() {
// 定义一个成员方法
for (
int i
=
0; i
< s.length; i
++)
addElement(s[i]);
}
}
}
实例321 建立有图像的JComboBox
import java.awt.Component;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
//建立有图像的JComboBox
public
class JComboBoxDemo4 {
String[] s
= {
"西瓜",
"苹果",
"草莓",
"香蕉",
"葡萄" };
public JComboBoxDemo4() {
JFrame f
=
new JFrame(
"JComboBox");
// 创建一个JFrame的对象
Container contentPane
= f.getContentPane();
// 创建一个Container容器
JComboBox combo
=
new JComboBox(s);
// 定义一个JComboBox对象
combo.setBorder(BorderFactory.createTitledBorder(
"你最喜欢吃哪些水果?"));
combo.setRenderer(
new ACellRenderer());
combo.setMaximumRowCount(
3);
contentPane.add(combo);
// 将JComboBox对象combo放到入Container这个容器中
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
// 添加一个窗口监听器
System.exit(
0);
}
});
}
public
static
void main(String[] args) {
new JComboBoxDemo4();
}
}
class ACellRenderer
extends JLabel
implements ListCellRenderer {
ACellRenderer() {
// 创建一个成员方法
setOpaque(true);
}
public Component getListCellRendererComponent(JList list, Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
if (value
!= null) {
setText(value.toString());
setIcon(
new ImageIcon(
".\\icons\\fruit"
+ (index
+
1)
+
".jpg"));
}
if (isSelected) {
// 判断这个复选框是否被选中
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
return
this;
}
}
实例322 建立可自行输入的JComboBox
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
//建立可自行输入的JComboBox
public
class JComboBoxDemo5 {
String[] fontsize
= {
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26" };
String defaultMessage
=
"请选择或直接输入文字大小!";
public JComboBoxDemo5() {
JFrame f
=
new JFrame(
"JComboBox5");
// 创建一个JFrame对象
Container contentPane
= f.getContentPane();
JComboBox combo
=
new JComboBox(fontsize);
combo.setBorder(BorderFactory.createTitledBorder(
"请选择你要的文字大小"));
combo.setEditable(true);
// 将JComboBox设成是可编辑的.
ComboBoxEditor editor
= combo.getEditor();
// getEditor()方法返回ComboBoxEditor对象,如果你查看手册,你就会发现。
combo.configureEditor(editor, defaultMessage);
contentPane.add(combo);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
// 添加一个窗口监听
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
static
void main(String args[]) {
new JComboBoxDemo5();
}
}
实例323 JComboBox的事件处理
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public
class JComboBoxDemo6
implements ItemListener, ActionListener {
String[] fontsize
= {
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28" };
String defaultMessage
=
"请选择或直接输入文字大小!";
Font font
= null;
// 定义一个Font对象
JComboBox combo
= null;
// 定义一个JComboBox对象
JLabel label
= null;
// 定义一个JLabel对象
public JComboBoxDemo6() {
JFrame f
=
new JFrame(
"JComboBox");
Container contentPane
= f.getContentPane();
contentPane.setLayout(
new GridLayout(
2,
1));
label
=
new JLabel(
"Swing", JLabel.CENTER);
font
=
new Font(
"SansSerif", Font.PLAIN,
12);
label.setFont(font);
combo
=
new JComboBox(fontsize);
combo.setBorder(BorderFactory.createTitledBorder(
"请选择你要的文字大小:"));
combo.setEditable(true);
// 设置状态为可编辑
ComboBoxEditor editor
= combo.getEditor();
combo.configureEditor(editor, defaultMessage);
combo.addItemListener(
this);
// 添加文本监听
combo.addActionListener(
this);
// 添加事件监听
contentPane.add(label);
contentPane.add(combo);
f.pack();
f.show();
f.addWindowListener(
new WindowAdapter() {
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
public
static
void main(String[] args) {
new JComboBoxDemo6();
}
public
void actionPerformed(ActionEvent e) {
boolean isaddItem
= true;
int fontsize
=
0;
String tmp
= (String) combo.getSelectedItem();
// 判断用户所输入的项目是否有重复,若有重复则不增加到JComboBox中。
try {
fontsize
= Integer.parseInt(tmp);
for (
int i
=
0; i
< combo.getItemCount(); i
++) {
if (combo.getItemAt(i).equals(tmp)) {
isaddItem
= false;
break;
}
}
if (isaddItem) {
combo.insertItemAt(tmp,
0);
// 插入项目tmp到0索引位置(第一列中).
}
font
=
new Font(
"SansSerif", Font.PLAIN, fontsize);
label.setFont(font);
}
catch (NumberFormatException ne) {
combo.getEditor().setItem(
"你输入的值不是整数值,请重新输入!");
}
}
public
void itemStateChanged(ItemEvent e) {
// ItemListener界面只有itemStateChanged()一个方法,在此实作它。
if (e.getStateChange()
== ItemEvent.SELECTED) {
// 当用户的选择改变时,则在JLabel上会显示出Swing目前字形大小信息.
int fontsize
=
0;
try {
fontsize
= Integer.parseInt((String) e.getItem());
label.setText(
"Swing 目前字形大小:"
+ fontsize);
}
catch (NumberFormatException ne) {
// 若所输入的值不是整数,则不作任何的操作.
}
}
}
}
实例324 JTextField组件的使用
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public
class JTextFieldDemo {
public
static
void main(String args[]) {
JFrame f
=
new JFrame(
"JTextFieldDemo");
Container contentPane
= f.getContentPane();
// 返回窗体容器。
contentPane.setLayout(
new BorderLayout());
// 设置窗体容器布局。
JPanel p1
=
new JPanel();
// 声明面板容器。
p1.setLayout(
new GridLayout(
3,
2));
// 设置面板布局。
p1.setBorder(BorderFactory.createTitledBorder(
"请输入你的注册信息"));
// 设置面板边界。
JLabel lable1
=
new JLabel(
"姓名:", JLabel.CENTER);
// 创建标签。
JLabel lable2
=
new JLabel(
"性别:", JLabel.CENTER);
JLabel lable3
=
new JLabel(
"年龄:", JLabel.CENTER);
JTextField t1
=
new JTextField(
10);
// 创建单行文本框,其长度为10。
JTextField t2
=
new JTextField(
10);
JTextField t3
=
new JTextField(
10);
p1.add(lable1);
// 将标签及单行文本框依次添加到面板中。
p1.add(t1);
p1.add(lable2);
p1.add(t2);
p1.add(lable3);
p1.add(t3);
contentPane.add(p1);
f.setSize(
500,
200);
f.setVisible(true);
f.addWindowListener(
new WindowAdapter()
// 关闭事件。
{
public
void windowClosing(WindowEvent e) {
System.exit(
0);
}
});
}
}
实例325 使用JTextArea组件
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public
class JTextAreaDemo {
public
static
void main(String args[]) {
JFrame f
=
new JFrame(
"JTextAreaDemo");
f.getContentPane();
// 返回窗体容器。
JTextArea textArea
=
new JTextArea();
// 创建文本域。
JScrollPane pane
=
new JScrollPane(textArea);
// 将文本域添加到滚动面板中。
f.add(pane);
f.setSize(
250,
150);
f.setVisible(true);
}
}