📄 13.txt
字号:
setVisible(true);
}
//应用程序的入口方法
public static void main(String args[])
{
RadioButtonDemo frame = new RadioButtonDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
}
例程13-9
//TextFieldDemo.java
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
public class TextFieldDemo extends JFrame
{
public TextFieldDemo()
{
//获取内容窗格容器
Container contentPane= this.getContentPane();
//设置内容窗格容器的布局管理器为FlowLayout
contentPane.setLayout(new FlowLayout());
//内容窗格容器中加入两个文本组件,第一个只能输入数字
DigitalText txtDigitalText = new DigitalText(10);
JTextField txtNormal = new JTextField(10);
contentPane.add(txtDigitalText);
contentPane.add(txtNormal);
//显示框架窗口
pack();
setVisible(true);
}
//应用程序的入口方法
public static void main(String args[])
{
TextFieldDemo frame = new TextFieldDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
}
//该类从JTextField中派生,只允许用户输入数字
class DigitalText extends JTextField
{
//构造方法
public DigitalText()
{
}
//构造方法
public DigitalText( int column)
{
super(column);
}
//构造方法
public DigitalText(String strText, int column)
{
super(strText,column);
}
//重写方法,用于创建Document模型
protected Document createDefaultModel()
{
//TODO: Override this javax.swing.JTextField method
return new DigitalTextDocument();
}
class DigitalTextDocument extends PlainDocument
{
//用于检查用户输入的字符以确保插入的字符是有效的数字字符
public void insertString( int offs, String str, AttributeSet a)
throws BadLocationException
{
if( str == null ) return;
try{
Integer.parseInt(str);
super.insertString(offs,str,a);
}
catch ( NumberFormatException e){
JOptionPane.showMessageDialog(null,
"请输入数字。",
"验证错误",
JOptionPane.ERROR_MESSAGE);
}
}
}
}
例程13-10
//TextAreaDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import java.io.FileReader;
public class TextAreaDemo extends JFrame
{
private JTextArea textArea = new JTextArea();
private Container contentPane = getContentPane();
public TextAreaDemo()
{
//设置框架窗口标题
super("JTextArea Demo");
//读TextAreaDemo.java文件的内容并存入textArea组件中
readFile(textArea, "TextAreaDemo.java");
//创建功能面板并加入内容窗格的上部
contentPane.add(new ControlPanel(), BorderLayout.NORTH);
//创建滚动面板并加入内容窗格的中部
contentPane.add(new JScrollPane(textArea),BorderLayout.CENTER);
//显示框架窗口
setSize(400,300);
setVisible(true);
}
//应用程序的入口方法
public static void main(String args[])
{
TextAreaDemo frame=new TextAreaDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
//读取文件名称为s的内容并存入textComponent文本组件中
private void readFile(JTextComponent textComponent,String s)
{
try
{
(new DefaultEditorKit()).read(
new FileReader(s), textComponent.getDocument(), 0);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
//封装功能控制面板,里面包含三个JRadioButton组件
class ControlPanel extends JPanel
{
//创建三个JRadioButton组件
JRadioButton radioButtons[] = new JRadioButton[]
{
new JRadioButton("wrap off"),
new JRadioButton("wrap characters"),
new JRadioButton("wrap words"),
};
public ControlPanel()
{
ButtonGroup group = new ButtonGroup();
//动作事件监听器
Listener listener = new Listener();
for(int i=0; i < radioButtons.length; ++i)
{
//注册JRadioButton组件的动作监听器
radioButtons[i].addActionListener(listener);
group.add(radioButtons[i]);
add(radioButtons[i]);
if(i == 0) radioButtons[i].setSelected(true); // "wrap off"
}
}
//JRadioButton的事件监听器实现类
class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//获取事件的动作命令字符串(默认是组件的标题文本)
String action = e.getActionCommand();
//设置多行文本域的右边界换行
textArea.setLineWrap(!action.equals("wrap off"));
//设置词为边界换行
textArea.setWrapStyleWord(action.equals("wrap words"));
}
};
}
}
例程13-11
//SimpleListDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SimpleListDemo extends JFrame
{
public SimpleListDemo ()
{
//设置框架窗口标题
super("Swing List Demo");
String[] data = {
"Item one", " Item two", " Item three", " Item four",
"Item five", " Item six", " Item seven", " Item eight",
"Item night", " Item ten", " Item elevent", " Item twelve",
};
JList m_SimpleList = new JList(data);
//上面的代码等价于下面的两行代码
// JList m_SimpleList = new JList();
// m_SimpleList.setListData(data);
//把列表组件放入滚动面板中来实现滚动功能
JScrollPane ps = new JScrollPane(m_SimpleList);
getContentPane().add(ps, BorderLayout.CENTER);
//显示框架窗口
setSize(500, 240);
setVisible(true);
}
//应用程序的入口方法
public static void main(String args[])
{
SimpleListDemo frame=new SimpleListDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
}
例程13-12
//CheckListDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CheckListDemo extends JFrame
{
public CheckListDemo ()
{
//设置框架窗口标题
super("Swing List Demo");
String[] data = {
"Item one", " Item two", " Item three", " Item four",
"Item five", " Item six", " Item seven", " Item eight",
"Item night", " Item ten", " Item elevent", " Item twelve",
};
//创建JList实例
JList m_SimpleList = new JList(data);
//设置JLIst的定制绘制器
m_SimpleList.setCellRenderer(new CustomerCellRender());
//把列表组件放入滚动面板中来实现滚动功能
JScrollPane ps = new JScrollPane(m_SimpleList);
getContentPane().add(ps, BorderLayout.CENTER);
//显示框架窗口
setSize(200, 240);
setVisible(true);
}
//应用程序的入口方法
public static void main(String args[])
{
CheckListDemo frame=new CheckListDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
}
/**
* Cell Render for List used to paint customer List.
*/
class CustomerCellRender extends JCheckBox implements ListCellRenderer
{
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
//设置背景色
setBackground(isSelected ? list.getSelectionBackground() : list.getBackground());
//设置前景色
setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
//设置显示的文本内容
this.setText(value.toString());
return this;
}
}
例程13-13
//IconCombox.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class IconCombox extends JComboBox
{
//构造方法
public IconCombox(ImageIcon[] img, String[] strText)
{
//获取两个数组的大小的最小值,防止二者不一致,导致越界
int nItemCount=Math.min(img.length,strText.length);
ItemData[] objList=new ItemData[nItemCount];
for( int i=0; i< nItemCount; i++ ){
objList[i]=new ItemData(img[i],strText[i]);
}
//设置数据模型
this.setModel(new DefaultComboBoxModel(objList));
//设置定制单元绘制器
this.setRenderer(new IconComboRenderer());
}
/*
* 封装列表单元项包括图标和显示字符串
*/
class ItemData
{
private ImageIcon img;
private String strText;
//构造函数,直接继承父类
public ItemData(ImageIcon icon, String text)
{
img=icon;
strText=text;
}
//获取显示名
public String getText( )
{
return strText;
}
//获取图标对象
public Icon getIcon()
{
return img;
}
//类字符串化
public String toString()
{
return strText;
}
}
/**
* <pre>
* 用于绘制ComboBox的单元项,该绘制器对应的Model的每一项是一个
* 对象数组,包括String和Icon.
* </pre>
*/
class IconComboRenderer extends JLabel implements ListCellRenderer
{
//获得和失去焦点时绘制器使用的border.
private Border lineBorder = BorderFactory.createLineBorder(Color.red, 4);
private Border emptyBorder = BorderFactory.createEmptyBorder(2,2,2,2);
//构造函数,设置为透明.
public IconComboRenderer()
{
setOpaque(true);
}
//实现该方法,控制单元的绘制
public Component getListCellRendererComponent
(JList list,Object value,int index,
boolean isSelected,boolean cellHasFocus)
{
//绘制列表单元项的文本
setText(((ItemData)value).getText());
//绘制列表单元项的图标
this.setIcon(((ItemData)value).getIcon());
//根据选择状态的不同,对前、背景进行选择设置
if(isSelected)
{
setForeground(list.getSelectionForeground());
setBackground(list.getSelectionBackground());
}
else
{
setForeground(list.getForeground());
setBackground(list.getBackground());
}
//根据焦点状态的不同,对边框进行设置
if(cellHasFocus) setBorder(lineBorder);
else setBorder(emptyBorder);
return this;
}
}
}
例程13-14
//ComboBoxDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ComboBoxDemo extends JFrame
{
//构造图标数组
ImageIcon[] icons = new ImageIcon[]{
new ImageIcon("flight.gif"),
new ImageIcon("flight.gif"),
new ImageIcon("flight.gif")
};
//构造显示字符串数组
String[] texts=new String[]{
"Item one",
"Item two",
"Item three",
};
//用图标数组和字符串数组构造定制的组合框组件
IconCombox cboButton = new IconCombox(icons,texts);
public ComboBoxDemo()
{
//设置框架窗口标题
super("JComboBox Demo");
//获取内容窗格容器
Container contentPane = getContentPane();
//设置内容窗格容器的布局管理器为FlowLayout
contentPane.setLayout(new FlowLayout());
//把四个JButton组件加入到内容窗格容器中
contentPane.add(cboButton);
//显示框架窗口
setSize(400,200);
setVisible(true);
}
//应用程序的入口方法
public static void main(String args[])
{
ComboBoxDemo frame=new ComboBoxDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
}
例程13-15
//ProgressBarDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ProgressBarDemo extends JFrame
{
protected int m_min = 0;
protected int m_max = 100;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -