常用swing组件
JLabel(String text):创建具有指定文本的 标签
JLabel(String text, Icon icon, int horizontalAlignment): 创建具有指定文本、图像和水平对齐方式的标签。
选择框
JList类:创建列表框,用法类似于List类;
JComboBox类:用户可以在下拉列表看到第一个选项和它 旁边的箭头按钮,当用户单击箭头按钮时,将发生 ItemEvent事件; JCheckBox 类:负责创建复选框对象。与Checkbox相比, JCheckBox复选框的名字不仅可以是字符串,还可以是一 个图标; JRadioButton:负责创建单选钮,不过需要将同一组的选 项添加到ButtonGroup对象中。
例7 选择框使用 代码见word文档
文本框
JTextField类:创建单行文本框,功能与TextField类似;
JPasswordField类:创建密码框;为了安全性,用 public char[] getPassword() 来取代getText(); JTextArea类:创建多行文本框,通常放在JScrollPane对象中
中间容器
JPanel类:创建面板,用于容纳其它组件,默认的布局管理 器是FlowLayout。其用法与Panel类似. JScrollPane类:用于创建滚动窗格,我们可以把一个组件 放到该类对象中,然后通过滚动条来观察组件。注意: JTextArea不自带滚动条(这一点与重量组件TextArea不同), 因此,需要把文本区放到一个滚动窗口中。例如: JScorollPane scroll=new JScorollPane(new JTextArea()); 该类用法与ScrollPane类似。 JToolBar类:创建工具栏;setFloatable(boolean b)为 true(默认值)时,可以拖动到容器的四“边”中的何一边 , 也可以拖到单独窗体。 例2 JToolBar 工具栏的使用 。代码见word文档
con.add(jb);//正确!
Swing窗体的布局管理器也是通过内容面板来设置,例如: con.setLayout(new FlowLayout());
Swing窗体可以通过调用方法:
setDefaultCloseOperation(参数);来关闭窗口
参数如下:
DO_NOTHING_ON_CLOSE:不执行任何操作;
JApplet类:是用来建立java小应用程序的。该类位于 Javax.swing包中,它还是java.applet.Applet的子类,也 是一个重量容器; JDialog类:是java.awt.Dialog类的子类。该类或其子类创 建的对象也是重量容器,该对象必须依附一个JFrame对象; JWindow类:是awt.window 的Swing版本,JWindow 是 一个容器,可以显示在用户桌面上的任何位置。它没有标题 栏、窗口管理按钮或者其它与 JFrame 关联的修饰。较少使 用。 注意:AWT组件事件处理的方法,仍适用于Swing组件,以后 不再说明。
Swing不允许把组件直接添加到窗体中,而是要将组件添加 到内容面板,内容面板可以通过getContentPane()方法得到。 例如: JFrame f=new JFrame();
JButton jb=new JButton(“按钮”);
//f.add(jb); 错误! Container con=f.getContentPane();
例8: 生成一个表格,其中一列为其中两列之和,当编辑一个单 元格时,能自动求出总和,并且可根据每一列的列名进行排 序。如图所示:
public class JTableTest extends JFrame implements TableModelListener { JTable table; Object a[][] = { { "张三", "0", "0", "0" }, { "李四", "0", "0", "0" }, { "王五", "0", "0", "0" }, { "陈六", "0", "0", "0" } }; Object name[] = { “姓名”, “英语成绩”, “数学成绩”, “总成绩” }; JTableTest() { super("JTable测试"); //构造一个表格模型。a 数组中的第一个索引是行索引,第二个索引是列索引。 TableModel model = new DefaultTableModel(a, name); // 每当数据模型发生更改时,就将一个侦听器添加到被通知的列表中。 model.addTableModelListener(this); table = new JTable(model); table.setFillsViewportHeight(true);// 设置此表是否始终大到足以填充封闭视口的高度。 table.setAutoCreateRowSorter(true);//设置排序 getContentPane().add(new JScrollPane(table), BorderLayout.CENTER); setSize(300, 200);setVisible(true);validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
JSplitPane类:拆分窗口就是被分成两部分的窗口。拆分窗口 有两种类型:水平拆分和垂直拆分。在拆分的两个窗口中分别 放入不同的组件,中间的拆分线可以移动。 例3 JSplitPane拆分窗口使用 代码见word文档 JTabbedPane类:它允许用户通过单击具有给定标题、图标的 选项卡,在一组组件之间进行切换 例4 JTabbedPane选项面板使用 。代码见word文档 JInternalFrame类:创建内部窗体,常用构造方法: JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable):创建 具有指定标题、可调整、可关闭、可最大化和可图标化的内部 窗体。 JDesktopPane 类:用于创建多文档界面或虚拟桌面的容器 。 用户可创建 JInternalFrame 对象并将其添加到 JDesktopPane,以管理可能的重叠内部窗体 例5 JDesktopPane 与JInternalFrame使用 。代码见word文档
Swing的组件 JButton(按钮)
JButton类:负责创建按钮对象,与Button相比,JBtton 按钮具有更加丰富的外观; 常用方法: JButton(String text, Icon icon):创建一个带初始文本 和图标的按钮 getIcon():得到按钮图标 setHorizontalTextPosition(int textPosition):设置按 钮上的名字相对图标的水平位置 setVerticalTextPosition(int textPosition):设置按钮 上的名字相对图标的垂直位置 setMnemonic(int mnemonic):设置键盘的快捷键,参 数为KeyEvent.VK_A~KeyEvent.VK_Z 例6 JButton使用。代码见word文档
JLabel(标签)
JLabel 类:负责创建标签对象,与Label相比,JLabel标签具 有更加丰富的外观,例如我们可以创建带图标的标签。 常用方法: JLabel() :创建无图像并且其标题为空字符串标签
JLabel(Icon image):创建具有指定图像的标签
JLabel(Icon image, int horizontalAlignment):创建具有 指定图像和水平对齐方式的标签
JComonent的几个代表子类: JLable 负责创建标签 JMenu 负责创建菜单对象 JMenuItem 负责创建菜单项对象 JPanel 负责创建面板对象 JPasswordField 负责创建口令文本框对象 JPopupMenu 负责创建弹出式菜单 JProgressBar 负责创建进程条 JRadioButton 负责创建单选按钮 JScrollBar 负责创建滚动条 JScrollPane 负责创建滚动窗格 JSlider 负责创建滑动条 JSplitPane 负责创建拆分窗格 JTable 负责创建表格 JTree 负责将分层数据集显示为轮廓的控件
JTable(TableModel dm, TableColumnModel cm) 构造一个 JTable,使用数据模型 dm、列模型 cm 和默认 的选择模型对其进行初始化。 JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) 构造一个 JTable,使用数据模型 dm、列模型 cm 和选择 模型 sm 对其进行初始化。
Swing的类库
Swing类库位于javax.swing包中;
AWT组件和对应的Swing组件,从名称上很容易记忆和区别。 例如,AWT的框架类、面板类、按钮类和菜单类,被命名 为Frame、Panel、Button和Menu,而Swing组件的名前 多一个“J”字母;
JComponent 类是java.awt包中容器类Container类的子类, JComponent类的子类都是轻量级组件;
Swing的容器 Swing的顶级容器
JFrame类:是 java.awt包中Frame类的子类,其功能是创 建窗体 , 很 多 用 法 与 Frame 类 似 , 默 认 布 局 管 理 器 是 BorderLayout。下面主要讨论它的不同用法: 一个Swing窗体由多层窗格组成: