无论学什么,我们都要从简单的开始。学习编程也是一样,我们先设计简单的界面。
在本篇中,我们要设计一个窗口,里面有一段文字和一个按扭。
首先,我们需要使用引入以下包
import javax.swing.JFrame;
其中的JFrame类就是窗口类。定义它的一个对象即可创建一个窗口。
在实际情况中,我们通常会这样做:定义一个类,继承JFrame。然后自己去写构造方法,本篇中的窗口将使用以下方法进行设计。
首先,我们定义一个类,叫做MainFrame,继承JFrame。
public class MainFrame extends JFrame {
}
在继承javax.swing中的类的时候,都会带有警告,不过这种警告可以不用管它。如果看着不爽,可以将鼠标放到类名上,然后自己随便点一个,即可消除。比如:
public class MainFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
}
首先,我们要对窗口进行一些基本的设置,比如设置大小,位置等。JFrame中就有两个方法,可以用来设置大小和位置。分别是setSize()和setLocation()。
setSize()有两个整数参数,第一个为他的宽度,第二个为他的高度。
setLocation()也有两个整数参数,第一个为横向向右的偏移量,第二个为纵向向下的偏移量。屏幕最左上方的点为(0,0)。
现在我们设计一个宽度为400,高度为300的窗口,位置在(200,200)。代码如下:
public MainFrame() {
this.setSize(400, 300);
this.setLocation(200, 200);
}
接下来,我们需要创建一个窗口的对象。默认情况下,窗口是不可显示的,我们可以通过setVisibls()来让窗口变为可以看见的。代码如下:
public static void main(String[] args) {
MainFrame mf=new MainFrame();
mf.setVisible(true);
}
对代码进行运行,我们可以看到以下效果:
大家可以发现,我们的窗口没有标题,里面什么都是空的,只有一个灰色的背景。
当我们的窗口关闭之后,细心的同学可能会发现,我们的窗口关闭之后,我们的程序仍然在运行中。一般情况下,我们往往都是在窗口关闭之后,程序也就自己结束了。因此,我们可以在构造方法中添加一个语句。
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这样,就可以在关闭窗口的时候,自动结束程序,对于没有结束的程序,我们可以到任务管理器中进行结束进程。
现在我们的窗口是空白的,接下来我们需要为其添加一段文字和一个按扭。
先介绍我们接下来会用到的两个类:
import javax.swing.JLabel;
import javax.swing.JButton;
JLabel是一个标签类,用于显示一段文字,JButton是一个按扭。
我们先添加文字"Java GUI",我们需要创建一个JLabel的对象,然后设置它的文字。
public MainFrame() {
this.setSize(400, 300);
this.setLocation(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel l=new JLabel();
l.setText("Java GUI");//设计文字
this.add(l);//将l添加到窗口中
}
对构造方法进行添加。将代码进行修改后,运行效果如下:
这样就设计出了文字。接下来添加按扭也是一样。
public MainFrame() {
this.setSize(400, 300);
this.setLocation(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel l=new JLabel();
l.setText("Java GUI");//设计文字
this.add(l);//将l添加到窗口中
JButton b=new JButton();
this.add(b);//将b添加到窗口中
}
代码修改之后,运行效果如下:
此时,可以发现,我们的标签被压在了按扭上。我们需要对于他进行修改。我们可以修改布局方式,这样就可以解决问题了,我们下一篇将介绍布局方式。
public MainFrame() {
this.setSize(400, 300);
this.setLocation(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());//设计布局方式
JLabel l=new JLabel();
l.setText("Java GUI");//设计文字
this.add(l);//将l添加到窗口中
JButton b=new JButton();
this.add(b);//将b添加到窗口中
}
这样,我们的任务就完成了(这按扭了太小了吧……)。
本节完整的代码如下:
package teach2;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.FlowLayout;
public class MainFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public MainFrame() {
this.setSize(400, 300);
this.setLocation(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());//设计布局方式
JLabel l=new JLabel();
l.setText("Java GUI");//设计文字
this.add(l);//将l添加到窗口中
JButton b=new JButton();
this.add(b);//将b添加到窗口中
}
public static void main(String[] args) {
MainFrame mf=new MainFrame();
mf.setVisible(true);
}
}