import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField; //详细用到的包,不懂得可以查API学习
public class Adder02 implements ActionListener
{
JFrame AdderFrame;
JTextField TOprand1,TOprand2;
JLabel LAdd,LSum;
JButton BAdd,BClear;
JPanel JP1,JP2;
public
Adder02() //构造方法。
{
AdderFrame=new
JFrame("AdderFrame"); //javaGUI知识
TOprand1=new
JTextField("0.0");
TOprand2=new
JTextField("0.0");
LAdd=new JLabel("+");
LSum=new
JLabel("= ");
BAdd=new JButton("Add");
BClear=new
JButton("Clear");
JP1=new JPanel();
JP2=new JPanel();
AdderFrame.add(JP1);
JP1.add(TOprand1);
JP1.add(LAdd);
JP1.add(TOprand2);
JP1.add(LSum);
//必须要分两个面板,可以尝试用一个JPanel试试,加深学习
AdderFrame.add(JP2);
JP2.add(BAdd);
JP2.add(BClear);
AdderFrame.getContentPane().setLayout(new
BorderLayout());//布局管理器
AdderFrame.getContentPane().add(JP1,BorderLayout.NORTH);
//java 1.4 之后似乎可以直接使用AdderFrame.add()已经验证
AdderFrame.getContentPane().add(JP2,BorderLayout.SOUTH);
//查API知
getContentPane()返回此窗体的 contentPane
对象 //add(Component
comp, int index)将指定组件添加到此容器的给定位置上。
AdderFrame.addWindowListener(new
WindowAdapter() //他的作用是你可以点击右上角的叉来关闭窗口
{
public void
windowClosing(WindowEvent event)
{
System.exit(0);
}
});
//addWindowListener(WindowListener
l)添加指定的窗口侦听器,以从此窗口接收窗口事件。
//WindowAdapter 接收窗口事件的抽象适配器类。
//windowClosing(WindowEvent
e)窗口正处在关闭过程中时调用。此时可重写关闭操作。
//一下三行代码的作用是将窗口显示在计算机屏幕的中间位置
int width =
Toolkit.getDefaultToolkit().getScreenSize().width; int height =
Toolkit.getDefaultToolkit().getScreenSize().height;
//Toolkit此类是所有 Abstract
Window Toolkit 实际实现的抽象超类。Toolkit是一个工具类.不需要实例化.
//getDefaultToolkit()是他的一个静态方法.这个方法的返回值(在此处为对象)
//还有一个方法getScreenSize(),最后的这个方法返回一个Dimension类型的对象.是返回当先分辨率的.
//然后设置你编写的窗口的初始位置,也就是在中间, AdderFrame.setLocation(width /
2 , height / 2 );
AdderFrame.pack(); //pack()调整此窗口的大小,以适合其子组件的首选大小和布局。
AdderFrame.setVisible(true);
AdderFrame.setResizable(false);
AdderFrame.setSize(250,100);
//添加按钮的时间监听功能
BAdd.addActionListener(this); //“this”也实现方法
BClear.addActionListener(new
ActionListener() 这是一个匿名内部类//
{
public void
actionPerformed(ActionEvent event)
{
TOprand1.setText("0.0");//setText(String
t)将此 TextComponent 文本设置为指定文本。t - 要设置的新文本
TOprand2.setText("0.0");
LSum.setText("="); }
});
}
//重写actionPerformed方法
public void
actionPerformed(ActionEvent event)
{
double
sum=(double)(Double.valueOf(TOprand1.getText()).doubleValue() +
Double.valueOf(TOprand2.getText()).doubleValue());
LSum.setText("="+sum);//getText()是类javax.swing.text.JTextComponent的方法。JTextField是其子类。返回此
TextComponent 中包含的文本。
//doubleValue()返回此 Double 对象的 double 值。
//valueOf(double d)返回表示指定的 double 值的 Double 实例。
//Double.valueOf(str)把String转化成Double类型的对象比如Stirng str="1.0";
//那么Double.valueOf(str)等价于new
Double("1.0");创建一个值为1.0的Double的实例
//而doubleValue();就是求double类型的原始值,等价于double
dnum=Double.valueOf(str).doubleValue()=1.0d;求对象的初始化的值
}
public static void main(String[] args)
{
Adder02 adder=new
Adder02();
}
}
程序已经验证可以使用
程序编写步骤(流程):
1、首先编写出窗口。
2、然后编写出关闭窗口功能和窗口位置
3、实现功能,实现按钮的监听功能。
总结:这个程序并没有实现复杂的算法,仅仅是应用到了窗口的实现及运用。所以这个程序可以很好的学习了GUI知识。
发散思维:你是否可以将它改成一个简易的计算器呢。
今到此
如有纰漏后续改正。