实例1 产生自己的控件
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
//颜色选择下拉框演示
public class IconComboBoxDemo extends JFrame{ JLabel iconLabel=null; //用来响应列表框选择的变化 JComboBox iconComboBox=null; //定制的选择下拉框
public IconComboBoxDemo(){
//定义Object二维数组,用于初始化下拉框,参数依次为图标,显示文本,提示文本 Object[][] obj={
{new ImageIcon(\旅游\提供旅游的最新信息\
{new ImageIcon(\音乐\提供最新的音乐资讯,古典的、流行的...\ {new ImageIcon(\聊天\与朋友聊天\ {new ImageIcon(\影视\影视娱乐\ {new ImageIcon(\家居\家居世界\ };
//初始化下拉框
iconComboBox = new JComboBox();
iconComboBox.setMaximumRowCount(3); //设置最大可视行数 iconComboBox.setRenderer(new IconRenderer()); //设置单元绘制器 for (int i=0;i //初始化iconLabel信息 iconLabel = new JLabel(); //下拉框事件处理,用匿名类实现 iconComboBox.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ //处理事件 Object[] obj = (Object[])iconComboBox.getSelectedItem(); //得到选择的内容,此处为一维数组 iconLabel.setIcon((Icon)obj[0]); //设置iconLabel的图标 iconLabel.setText(obj[1].toString()); //设置iconLabel的文本 } }); //增加组件到主窗体上 this.getContentPane().setLayout(new BorderLayout()); //设置布局管理器 this.getContentPane().add(iconComboBox,BorderLayout.NORTH); //在上方增加下拉框 this.getContentPane().add(iconLabel,BorderLayout.CENTER); //在中间增加iconLabel,用于响应选择的变化 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 this.setSize(350,260); //设置窗口尺寸 this.setVisible(true); //显示窗口 } public static void main(String[] args){ new IconComboBoxDemo(); } } import java.awt.*; import javax.swing.*; import javax.swing.border.LineBorder; //带图标下拉框的单元绘制器,从JLabel类扩展,实现ListCellRenderer接口 public class IconRenderer extends JLabel implements ListCellRenderer{ public Component getListCellRendererComponent(JList list, Object obj, int row, boolean sel, boolean hasFocus) { Object[] cell = (Object[])obj; //得到行的参数 setIcon((Icon)cell[0]); //设置图标 setText(cell[1].toString()); //设置文本 setToolTipText(cell[2].toString()); //设置提示文本 setBorder(new LineBorder(Color.WHITE)); //设置边界 if (sel){ setForeground(Color.MAGENTA); //如果选中了,设置文本颜色为品红色 } else{ setForeground(list.getForeground()); //如果未选中,设置文本颜色为默认色 } return this; } } 实例2 控件的排布示例 import java.awt.*; import javax.swing.*; public class BorderLayoutDemo extends JFrame{ public static void main( String args[] ){ //构造函数 Container container = getContentPane(); //得到容器 container.setLayout( new BorderLayout() ); //设置布局管理器为Borderlayout container.add(new JButton(\ //增加按钮 container.add(new JButton(\ container.add(new JButton(\ container.add(new JButton(\ container.add(new JButton(\ setTitle(\演示\ //设置窗口标题 setSize(280,200); //设置主窗口尺寸 setVisible(true); //设置主窗口可视 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 } public static void main( String args[] ){ new BorderLayoutDemo(); } } import java.awt.*; import javax.swing.*; public class GridBagLayoutDemo extends JFrame { public GridBagLayoutDemo() { //构造函数 Container contentPane = getContentPane(); //得到容器 contentPane.setLayout(new GridBagLayout()); //设置布局管理器 JLabel labelName=new JLabel(\姓名\ //姓名标签 JLabel labelSex=new JLabel(\性别\ //性别标签 JLabel labelAddress=new JLabel(\住址\ //住址标签 JTextField textFieldName = new JTextField(); //性名文本域 JTextField textFieldAddress = new JTextField(); //地址文本域 JComboBox comboBoxSex = new JComboBox(); //性别组合框 comboBoxSex.addItem(\男\ //增加选择项 comboBoxSex.addItem(\女\ JButton buttonConfirm=new JButton(\确定\ //确定按钮 JButton buttonCancel=new JButton(\退出\ //退出按钮 //增加各个组件 contentPane.add(labelName, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 0), 0, 0)); contentPane.add(textFieldName, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0)); contentPane.add(comboBoxSex, new GridBagConstraints(3, 0, 1, 1, 1.0, 0.0 ,GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0)); contentPane.add(labelSex, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 0), 0, 0)); contentPane.add(buttonConfirm, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 0, 3, 0), 0, 0)); contentPane.add(buttonCancel, new GridBagConstraints(3, 2, 1, 1, 0.0, 0.0 ,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 0, 3, 0), 0, 0)); contentPane.add(labelAddress, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 0), 0, 0)); contentPane.add(textFieldAddress, new GridBagConstraints(1, 1, 3, 1, 0.0, 0.0 ,GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0)); setTitle(\演示\ //设置窗口标题 setSize(300,140); //设置窗口尺寸 setVisible(true); //设置窗口可见 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 } public static void main(String args[]) { new GridBagLayoutDemo(); } } 实例3 控件的相互控制与消息传递 import java.awt.*; import java.awt.event.*; import javax.swing.*; //控件的相互控制与消息传递 public class ActionDemo extends JFrame{ JTextField jtfName; //名字输入域 JTextArea jtaChat; //显示聊天信息 JTextArea jtaInput; //输入消息 JButton jbSend; //发送消息按钮 JButton jbLink; //连接按牛 JButton jbUnlink; //断开按牛 public ActionDemo(){ super(\控件的相互控制\ //调用父类构造函数 Container container=this.getContentPane(); //得到容器 JPanel p=new JPanel(); //初始化一个面板 jtfName=new JTextField(10); //初始化名字输入域 Box box1=new Box(BoxLayout.X_AXIS); //初始化一个Box p.add(new JLabel(\昵称:\ //增加昵称标签 p.add(jtfName); //增加名字输入域 box1.add(jbLink); box1.add(jbUnlink); container.add(p,BorderLayout.NORTH); //在容器上增加面板 jtaChat=new JTextArea(); //初始化信息显示文本框 container.add(new JScrollPane(jtaChat),BorderLayout.CENTER); //在容器上增加信息显示文本框 Box box=new Box(BoxLayout.X_AXIS); //初始化一个Box jtaInput=new JTextArea(3,20); //初始化消息输入域 jbSend=new JButton(); //初始化发送按钮 box.add(new JScrollPane(jtaInput)); //增加消息输入域 box.add(jbSend); container.add(box,BorderLayout.SOUTH); //在容器上增加box