|
private static String labelPrefix = "Number of button clicks: "; private int numClicks = 0; //计数器,计算点击次数 public Component createComponents() { final JLabel label = new JLabel(labelPrefix + "0 ");
JButton button = new JButton("I'm a Swing button!"); button.setMnemonic(KeyEvent.VK_I); //设置按钮的热键为'I' button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { numClicks++; label.setText(labelPrefix + numClicks); //显示按钮被点击的次数 } }); label.setLabelFor(button);
/* 在顶层容器及其内容之间放置空间的常用办法是把内容添加到Jpanel上,而Jpanel本身没有边框的。*/
JPanel pane = new JPanel(); pane.setBorder(BorderFactory.createEmptyBorder( 30, //top 30, //left 10, //bottom 30) //right ); pane.setLayout(new GridLayout(0, 1)); //单列多行 pane.add(button); pane.add(label); return pane; }
public static void main(String[] args) { try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); //设置窗口风格 } catch (Exception e) { }
//创建顶层容器并添加内容. JFrame frame = new JFrame("SwingApplication"); SwingApplication app = new SwingApplication(); Component contents = app.createComponents(); frame.getContentPane().add(contents, BorderLayout.CENTER);
//窗口设置结束,开始显示 frame.addWindowListener(new WindowAdapter() { //匿名类用于注册监听器 public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.pack(); frame.setVisible(true); } }

7.1.9 Swing程序结构简介
Swing的程序设计一般可按照下列流程进行: 1. 引入Swing包 2. 选择"外观和感觉" 3. 设置顶层容器 4. 设置按钮和标签 5. 向容器中添加组件 6. 在组件周围添加边界 7. 进行事件处理
例子7.1说明了Swing中程序设计的结构以及最基本的组件Button和Label的用法。在程序中,我们建立一个Swing风格的窗口,并在其中添加一个按钮,程序中保存一个计数器以计算按钮被点击的次数,并在每一次点击之后用一个Label显示。在这个程序中我们可以看到Swing组件的使用与AWT组件的使用基本方法一致,使用的事件处理机制也完全相同。这些在前面的AWT中已经讲过,不再赘述。
7.2 Swing组件和容器
在Swing中不但用轻量级的组件替代了AWT中的重量级的组件,而且Swing的替代组件中都包含有一些其他的特性。例如,Swing的按钮和标签可显示图标和文本,而AWT的按钮和标签只能显示文本。Swing中的大多数组件都是AWT组件名前面加了一个"J"。
7.2.1 组件的分类
Jcomponent是一个抽象类,用于定义所有子类组件的一般方法,其类层次结构如下所示: |