我们不用窗口来运行自己的代码,只是一个很单调的界面,把自己的代码结合到窗口上就可以变成一个可以使用使用程序,我们先来制作一个最简易的计算矩形面积的和周长的小窗口程序。
先来主函数:
package com.li;
public class TextOblongGUI {
public static void main(String[] args) {
// TODO 自动生成的方法存根
new OblongGUI();
}
}
再来看一看Oblong()类的代码(这就是我们平时直接编好,然后在main中调用这个方法就可以了,加上窗口方面的代码就可以实现在窗口中显示了)
package com.li;
public class Oblong {
private double length;
private double height;
public Oblong(double lengthIn, double heightIn)
{
length = lengthIn;
height = heightIn;
}
public void setLength(double lengthIn)
{
length = lengthIn;
}
public void setHeight(double heigthIn)
{
height = heigthIn;
}
public double calculateArea()
{
return height * length;
}
public double calculatePerimeter()
{
return 2 * (height + length);
}
}
下面是OblongGUI()类的代码
package com.li;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class OblongGUI extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private Oblong myOblong = new Oblong(0,0);
private JLabel lengthLabel = new JLabel("Length");
private JTextField lengthField = new JTextField(5);
private JLabel heightLabel = new JLabel("Height");
private JTextField heightField = new JTextField(5);
private JButton calcButton = new
JButton("Calculate");
private JTextArea displayArea = new JTextArea(2,20);
public OblongGUI()
{
setTitle("Oblong GUI");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
add(lengthLabel);
add(lengthField);
add(heightLabel);
add(heightField);
add(calcButton);
add(displayArea);
setSize(240,135);
setLocation(300,300);
calcButton.addActionListener(this);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
String lengthEntered = lengthField.getText();
String heightEntered = heightField.getText();
if(lengthEntered.length() == 0 ||
heightEntered.length() == 0)
{
displayArea.setText("Length and height must
be entered");
}
else
{
myOblong.setLength(Double.parseDouble(lengthEntered));
myOblong.setHeight(Double.parseDouble(heightEntered));
displayArea.setText("The area of the oblong is"
+myOblong.calculateArea()
+ "\n"
+ "The perimeter of the
+ oblong is"
+myOblong.calculatePerimeter());
}
}
}
效果图
我们来逐一分析一下代码
对于Oblong()类中的代码就没有必要过多解释了
对于OblongGUI()类中的代码:
private Oblong myOblong = new Oblong(0,0);
private JLabel lengthLabel = new JLabel("Length");
private JTextField lengthField = new JTextField(5);
private JLabel heightLabel = new JLabel("Height");
private JTextField heightField = new JTextField(5);
private JButton calcButton = new
JButton("Calculate");
private JTextArea displayArea = new JTextArea(2,20);
第一行是对Oblong()类进行实例化
JLayout类是一个可以用来显示文本的,实例化的对象直接以文本的方式显示在窗口上显示出来
JTextField类包含一个构造函数,可以接受一个整数作为参数,以列为单位,输入的整数表示列数,即可以用于用户输入的文本域的长度
JButton就是用来添加按钮的,我们在第二篇就已经谈过了
JTextArea是一个可以在窗口中显示一个大块文本域,在这里的文本域可以用来显示矩形的周长和面积的计算结果。其中的两个数字分别表示文本域的行和列。
public OblongGUI()
{
setTitle("Oblong GUI");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
add(lengthLabel);
add(lengthField);
add(heightLabel);
add(heightField);
add(calcButton);
add(displayArea);
setSize(240,135);
setLocation(300,300);
calcButton.addActionListener(this);
setVisible(true);
}
对于这段代码,以前有很详细的解释,对此就不进行详细的阐述,而对于calcButton.addActionListener(this)表示的是给calcButton按钮添加一个监视器,当按钮被按下的时候可以激发相关的操作。
add()是把上面的那些组件添加到窗口里。
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
String lengthEntered = lengthField.getText();
String heightEntered = heightField.getText();
if(lengthEntered.length() == 0 ||
heightEntered.length() == 0)
{
displayArea.setText("Length and height must
be entered");
}
else
{
myOblong.setLength(Double.parseDouble(lengthEntered));
myOblong.setHeight(Double.parseDouble(heightEntered));
displayArea.setText("The area of the oblong is"
+ myOblong.calculateArea()
+ "\n"
+ "The perimeter of the oblong is"
+ myOblong.calculatePerimeter());
}
}
声明的两个变量lenghtEntered和heightEntered用于接受用户输入的值,这些值通过TextField类中的getText方法读入(以String的形式),然后是检查输入的结果是否小于0.
最后是调用Oblong中自己定义的一些方法进行相关的计算。
这里的Double.parseDouble()可以把一个字符串形变量转换成double形的。
这里再介绍一下怎么把普通的变量转换成String型
看程序:
double d = 1.3;
int i = 5;
String = "" + i + d;
通过“”就可以把一些非String类型的变量转换成String型。