import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class Swi
{
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); //这里不明白
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
numClicks++;
label.setText(labelPrefix+numClicks);
}
});
label.setLabelFor(button);
JPanel pane=new JPanel();
pane.setBorder(javax.swing.BorderFactory.createEmptyBorder(30,30,10,30));
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){} //这个try-catch结构是不是多余的??
JFrame frame = new JFrame("Swing Application");
Swi app=new Swi();
Component contents=app.createComponents(); //这里返回类型为component有什么意义
frame.getContentPane().add(contents,BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() //JFrame自动已经带了关闭窗口功能了吧??
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;public class Swi
{
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); //这里不明白
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
numClicks++;
label.setText(labelPrefix+numClicks);
}
});
label.setLabelFor(button);
JPanel pane=new JPanel();
pane.setBorder(javax.swing.BorderFactory.createEmptyBorder(30,30,10,30));
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){} //这个try-catch结构是不是多余的??
JFrame frame = new JFrame("Swing Application");
Swi app=new Swi();
Component contents=app.createComponents(); //这里返回类型为component有什么意义
frame.getContentPane().add(contents,BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() //JFrame自动已经带了关闭窗口功能了吧??
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
}
楼主【sure2003】截止到2008-07-16 15:03:23的历史汇总数据(不包括此帖):
发帖的总数量:244 发帖的总分数:10333 每贴平均分数:42
回帖的总数量:210 得分贴总数量:6 回帖的得分率:2%
结贴的总数量:242 结贴的总分数:10263
无满意结贴数:2 无满意结贴分:50
未结的帖子数:2 未结的总分数:70
结贴的百分比:99.18 % 结分的百分比:99.32 %
无满意结贴率:0.83 % 无满意结分率:0.49 %
值得尊敬
查一下api文档,这个方法好像已经废弃了,不要再用了
2.trycatch是必须的,否则无法通过编译.自己去掉试一下应该不难.
3.//这里返回类型为component有什么意义
没什么意思,就是把返回的panel控件添加到当前的frame中.Component是JPanel的父类.
4. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);执行相同的操作,并不是说自带了关闭功能,其实也是以类似的方法关闭程序,不过简化了用户的负担.
这个是设置button的快捷键,使用ALT+i键就可以触发这个button的click事件catch(Exception e){} //这个try-catch结构是不是多余的??
这个try/catch不是多余的,因为 UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName())这个方法定义了可能抛出的异常有ClassNotFoundException,InstantiationException,IllegalAccessException,UnsupportedLookAndFeelException
所有不是多余的,如果你在这里不catch异常的话,那么就需要在main方法上throws这些异常。Component contents=app.createComponents(); //这里返回类型为component有什么意义
这个返回的component是为下面那句frame.getContentPane().add(contents,BorderLayout.CENTER);做准备的,
因为frame的getContentPane方法返回的是java.awt.Container对象,而Container对象的add方法需要传入的参数就是Component 类型的frame.addWindowListener(new WindowAdapter() //JFrame自动已经带了关闭窗口功能了吧??JFrame是自带了,但是需要你设置才能生效,也可以说没有自带。设置的方法还有一种就是:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setMnemonic
public void setMnemonic(int mnemonic)设置当前模型上的键盘助记符。助记符是某种键,它与外观的无鼠标修饰符(通常是 Alt)组合时(如果焦点被包含在此按钮祖先窗口中的某个地方)将激活此按钮。
JFrame中下面的方法根据defaultCloseOperation 的值执行相应的操作,具体的操作你可以在类层次结构中进行跟踪
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) {
switch(defaultCloseOperation) {
case HIDE_ON_CLOSE:
setVisible(false);
break;
case DISPOSE_ON_CLOSE:
setVisible(false);
dispose();
break;
case DO_NOTHING_ON_CLOSE:
default:
break;
case EXIT_ON_CLOSE:
// This needs to match the checkExit call in
// setDefaultCloseOperation
System.exit(0);
break;
}
}
public void setMnemonic(int mnemonic)设置当前模型上的键盘助记符。助记符是某种键,它与外观的无鼠标修饰符(通常是 Alt)组合时(如果焦点包含在此按钮祖先窗口中的某个地方)将激活此按钮。
一个助记符必须对应键盘上的一个键,并且应该使用 java.awt.event.KeyEvent 中定义的 VK_XXX 键代码之一指定。助记符是不区分大小写的,所以具有相应键代码的键事件将造成按钮被激活,不管是否按下 Shift 修饰符。 如果在按钮的标签字符串中发现由助记符定义的字符,则第一个出现的助记符将是带下划线的,以向用户指示该助记符。
2,button.setMnemonic(KeyEvent.VK_I); //designed to handle character values which fall 功夫 between 'a' and 'z' or 'A' and 'Z'
3,Component contents=app.createComponents(); //下面要用的呀!!返回一个容器
4,frame.addWindowListener(new WindowAdapter()//swing中是事件触发,不加这个是关不了的.