java,我新手,最近才开始学习。所以经常碰到很多问题。
在编写下面的第一个java图形界面程序的时候,我在网上看到过说要配置什么swt路径问题。原来swt插件是用于优化和美观图形界面的,像我下面的是用java基础包写的程序,没有用到swt插件。就没必要配置swt路径。
下面解释一下我的第一个图形画界面程序:
显示一个整数的各位数字。演示一个带图形用户界面的完整应用程序,包括输入数据,显示结果,响应事件和异常处理。
package study;
import java.awt.*;
import java.awt.event.*;;
public class DigitFrame extends Frame implements ActionListener,WindowListener{
private TextField text_input,text_hundred,text_decade,text_digit;
private Button button_ok;
private Dialog dialog;
private Label label_dialog;
public DigitFrame()
{
super("显示整数数字");
this.setSize(190, 150);
this.setResizable(false); //窗口大小不能改变
this.setBackground(java.awt.Color.lightGray);
this.setLayout(new java.awt.FlowLayout(FlowLayout.LEFT)); //流布局且左对齐
this.add(new Label("整数"));
text_input=new TextField(10);
this.add(text_input);
text_input.addActionListener(this); //为文本行注册单击事件监听事件
button_ok=new Button("OK");
this.add(button_ok);
button_ok.addActionListener(this); //为按钮注册单击事件监听器
this.add(new Label("百位"));
text_hundred=new TextField(10);
text_hundred.setEditable(false); //只能显示,不能编辑
this.add(text_hundred);
this.add(new Label("十位"));
text_decade=new TextField(10);
text_decade.setEditable(false);
this.add(text_decade);
this.add(new Label("个位"));
text_digit=new TextField(10);
text_digit.setEditable(false);
this.add(text_digit);
this.addWindowListener(this);
this.setVisible(true);
dialog=new Dialog(this,"提示",true); //模式窗口
dialog.setSize(240,80);
label_dialog=new Label("",Label.CENTER); //标签的字符串为空,居中对齐
dialog.add(label_dialog);
dialog.addWindowListener(this); //为对话框注册窗口事件监听器
}
public void actionPerformed(ActionEvent e) //按钮单击,文本行中单击回车健
{
try
{
final int i=Integer.parseInt(text_input.getText());
text_hundred.setText(""+(i/100)); //百位
text_decade.setText(""+(i/10%10)); //十位
text_digit.setText("" +(i%10)); //个位
}
catch(NumberFormatException nfe)
{
label_dialog.setText("/""+text_input.getText()+"/""+"不能转换成整数,请重新输入!");
dialog.setLocation(this.getX()+100,this.getY()+100);
dialog.setVisible(true);
}
finally {}
}
public void windowClosing(WindowEvent e)
{
if(e.getSource()==dialog)
dialog.setVisible(false); //隐藏对话框
else
System.exit(0);
}
public void windowOpened(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public static void main(String[] args) {
new DigitFrame();
}
}
程序设计说明如下:
窗口关闭事件不能委托其他类处理
由于对话框也要响应窗口关闭事件,在windowClosing方法体中,需要识别当前事件源时框架还是对话框,所以本例的窗口关闭事件不能委托其他类处理。