Action sendMessage = new AbstractAction() { //发送消息Action public void actionPerformed(ActionEvent e){ replaceMessage(); //更新消息显示框 } }; jtaInput.getInputMap().put(KeyStroke.getKeyStroke(\ //键盘事件处理,按受回车事件 jtaInput.getActionMap().put(\ //回车时的处理(调用发送消息Action) jbSend.setAction(sendMessage); //设置命令为发送消息 jbSend.setText(\发送\ //设置按钮文本 this.setLocation(300,300); setSize(400,200); //设置窗口尺寸 setVisible(true); //设置窗口可视 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 } private void replaceMessage(){ String message=jtfName.getText()+\ //得到消息文本 jtaChat.insert(message,jtaChat.getDocument().getLength()); //插入消息到显示域未端 jtaInput.setText(\ //清空输入消息域 }
public static void main(String[] args){ new ActionDemo(); } }
实例4 彩色列表框
import java.awt.*; import javax.swing.*;
import javax.swing.border.*;
//彩色列表框的Renderer,须实现接口ListCellRenderer
public class ColorRenderer extends JLabel implements ListCellRenderer { //实现接口中的getListCellRendererComponent方法
public Component getListCellRendererComponent(JList list, Object obj, int row, boolean sel, boolean hasFocus) { if (hasFocus || sel) { //设置选中时的边界
setBorder(new MatteBorder(2, 10, 2, 10, list.getSelectionBackground())); }
else { //设置未选中时的边界
setBorder(new MatteBorder(2, 10, 2, 10, list.getBackground())); }
Color c=(Color)obj; //得到该行的颜色值 setForeground(c); //设置颜色 setText(c.toString()); //设置文本 return this; } }
import java.awt.*; import javax.swing.*;
import javax.swing.event.*;
//彩色列表框示例
public class JListDemo extends JFrame{ Container container; //容器 JTextField selectedText; //文本域,反映选择的颜色值 JList list; //列表框 JPanel selectedColor; //Panel,以选择的颜色为背景绘制
public JListDemo(){ //构造函数
container=getContentPane(); //得到容器
container.setLayout(new BorderLayout()); //设置布局管理器,不是必须的,Container默认为BorderLayout
Color[]
colors={Color.orange,Color.pink,Color.red,Color.black,Color.blue,Color.cyan,Color.green,Color.lightGray}; //列表框内容 list=new JList(colors); JScrollPane scrollPane = new JScrollPane(list); //以list初始化滚动窗格 selectedText=new JTextField(20); selectedColor=new JPanel(); selectedColor.setPreferredSize(new Dimension(20,20)); //设置panel的首选尺寸 container.add(selectedText,BorderLayout.NORTH); //增加组件到容器上
container.add(scrollPane,BorderLayout.CENTER); container.add(selectedColor,BorderLayout.SOUTH);
list.setCellRenderer(new ColorRenderer()); //设置Renderer list.addListSelectionListener( //事件处理 new ListSelectionListener(){
public void valueChanged(ListSelectionEvent event){ //选择值有改变 Color c=(Color)list.getSelectedValue(); //得到选择的颜色
selectedText.setText(\选择颜色:\R=\G =\B=\ //设置文本域文本
selectedColor.setBackground(c); //设置panel的颜色 } });
setSize(300,200); //设置窗口尺寸 setVisible(true); //设置窗口可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 }
public static void main(String[] args){ new JListDemo(); } }
实例5 圆形的按钮
import java.awt.*;
import javax.swing.*;
public class RoundButton extends JButton {
public RoundButton(String label) {
super(label); //调用父类构造函数
setContentAreaFilled(false); //不自行绘制按钮背景 }
//绘制圆和标签
protected void paintComponent(Graphics g) { if (getModel().isArmed()) { //鼠标点击时
g.setColor(Color.lightGray); //颜色为灰色 } else {
g.setColor(getBackground()); //置按钮颜色 }
g.fillOval(0, 0, getSize().width, getSize().height); //绘制圆 super.paintComponent(g); //调用父类函数,绘制其余部分 }
//绘制边框
protected void paintBorder(Graphics g) {
g.setColor(getForeground()); //设置边框颜色
g.drawOval(0, 0, getSize().width-1, getSize().height-1); //在边界上绘制一个椭圆 } }
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class RoundButtonDemo extends JFrame{ private int clickCount=0; //记录安钮的点击次数 private JButton button1; private JButton button2; public RoundButtonDemo() { button1 = new RoundButton(\这是一个圆形按钮\ //初始化按钮一
Dimension dim=button1.getPreferredSize(); //得到按钮一的最佳尺寸
double maxsize=Math.max(dim.getHeight(),dim.getWidth()); //得到长宽中的最大值 dim.setSize(maxsize,maxsize); //更改长宽为长宽中的最大值 button1.setPreferredSize(dim); //设置最佳尺寸
button2 = new RoundButton(\点击了: \次\ //初始化按钮二 button1.setBackground(Color.blue); //设置按钮的背景颜色 button2.setBackground(Color.pink);
getContentPane().add(button1); //增加组件 getContentPane().add(button2);
getContentPane().setLayout(new FlowLayout()); //设置布局管理器
button2.addActionListener(new ActionListener(){ //铵钮二的事件处理 public void actionPerformed(ActionEvent e){ clickCount++; //增加一次点击数
button2.setText(\点击了: \次\ //重新设置按钮二的标签 } });
setSize(300, 200); //设置窗口尺寸 setVisible(true); //设置窗口可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 }
public static void main(String[] args) { new RoundButtonDemo(); } }
实例6 密码验证框
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class JPasswordFieldDemo extends JFrame { JTextField username; //用户名输入框 JPasswordField password; //密码输入框 JButton logonButton; //登录按钮 JButton cancelButton; //退出按钮
public JPasswordFieldDemo() { //构造函数
super(\演示\ //调用父类构造函数 Container container=getContentPane(); //得到容器
container.setLayout(new GridLayout(3, 2, 2, 2)); //设置布局管理器
username=new JTextField(16); //初始化文本输入框,宽度为16列
password=new JPasswordField(16); //初始化密码输入框,宽度为16列 logonButton=new JButton(\登录\ //初始化登录按钮 logonButton.addActionListener( //登录按钮事件处理 new ActionListener(){
public void actionPerformed(ActionEvent evt){