import javax.swing.*; |
import java.awt.*; |
import java.awt.event.*; |
public class SwingApplication { |
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 ); |
} |
} |