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 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);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值