JAVA范例 十七)界面-Swing(一)实例306 JFrame框架的应用 ? import java.awt.event.ActionEventimport ja
JAVA范例 十七)界面-Swing(一)
实例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
implementsComboBoxModel {
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);
}
}