GUI是Graphic User Interface的缩写,意思是图形用户界面。它可以用来创建一个窗口,添加各种组件并相应用户的操作。
创建图形用户界面的一般步骤如下:
1,创建frame窗体。 Frame frame = new Frame(); 这样就创建了一个简单的窗体,很简单吧,但运行一下什么效果都没有,因为它默认是不可见的,要进行进一步设置。
2,对窗体进行基本设置。
比如大小,位置,布局。 setSize() setBounds() setLocation() setLayout()
3,定义组件。
4,将组件通过窗体的add方法添加到窗体中。
5,让窗体显示,通过setVisible(true);
完成上面5步就可以看见效果了,下面是一个简单的例子。
import java.awt.*;
import java.awt.event.*;
class MyFrame
{
private Frame frame;
public MyFrame(String title)
{
frame = new Frame(title); // 创建一个窗体,title为窗体的标题
init(); // 进行初始化
}
// 对窗体进行初始化的代码
public void init()
{
frame.setBounds(300, 200, 400, 300); // 设置窗体出现的位置和大小
frame.setLayout(new FlowLayout());
frame.addWindowListener(new WindowAdapter() // 为窗体添加监听,使其相应关闭操作
{
public void windowClosing(WindowEvent e)
{
System.exit(0); // 当用户点击关闭,会退出程序并隐藏窗体
}
});
Button test = new Button("测试按钮"); // 定义一个按钮
frame.add(test); // 将按钮添加到窗体上
frame.setVisible(true); // 设置窗体可见
}
public static void main(String[] args)
{
new MyFrame("这是我的窗体"); // 启动程序,创建并显示一个窗体,按关闭按钮退出
}
}
运行效果如下:
因为已经为窗体添加了事件监听,可以按关闭按钮关闭窗体。当然,要实现更为丰富的操作,仅仅是这些肯定不够,还可以为按钮添加监听,当点击按钮也可以进行一些操作。按钮的监听是ActionListener,只要调用按钮的addActionListener()方法就可以为按钮添加监听,其处理代码在actionPerformed方法中。也可以像窗体中添加其他组件,如标签,文本区,单选框,复选框等。它们都可以添加相应的监听来相应并处理用户的操作。
常用的添加监听的方法有两种:
一是声明一个监听器XxxListener的匿名内部类并实现相应的处理方法作为参数传递给addXxxListener()方法,上面例子中为窗体添加关闭监听用的就是匿名内部类的方式。
二是定义一个监听器的子类,实现相应的处理方法,并创建一个该类对象作为参数传递给addXxxListener()方法。
class MyListener implements ActionListener
{
public void actionPerformed(ActionEvent e) // 所有的动作监听器监听到的事件都到这里处理
{
if(e.getSource() == go) // 点击“转到”按钮
{
showDir();
}
else if(e.getSource() == ok) // 点击警告框上的“确定”按钮
{
alert.setVisible(false);
}
}
}
为按钮添加监听:
Button go = new Button("转到"); // 创建一个按钮
go.addActionListener(this);// 为按钮添加监听,相应点击操作
一个综合的例子:设计一个窗口,用户在文本域输入一个路径,点击按钮在一个多行文本区中显示该路径下的所有目录,如果路径不存在则弹窗提示。
思路:窗体中应该有一个文本域TextField来接收用户的输入,有一个按钮来让用户确定,还有一个多行文本区来显示结果。获取路径后,用File类的list方法得到指定路径下的目录名并显示。
代码如下:
import java.awt.*;
import java.io.*;
import java.awt.event.*;
class MyFrameTest extends Frame implements ActionListener
{
private Button go; //定义一系列要添加的组件,按钮、文本区、标签、对话框等
private TextField tf;
private TextArea ta;
private Dialog alert;
private Label lab;
private Button ok;
public MyFrameTest(String title) // 构造函数,title为窗体标题
{
super(title);
init(); // 执行窗体初始化方法
}
public void init() // 用来设置窗体的属性
{
setBounds(300, 200, 800, 600);
setLayout(new FlowLayout());
addWindowListener(new WindowAdapter() // 为窗体添加监听,使其相应关闭操作
{
public void windowClosing(WindowEvent e)
{
System.exit(0); // 当用户点击关闭,会退出程序并隐藏窗体
}
});
// 组件的具体属性
tf = new TextField(70); // 设置文本域的长度
ta = new TextArea(40, 80);// 设置多行文本区的行数和列数
go = new Button("转到");
ok = new Button("确定");
// 将组件添加到窗体
add(tf);
add(go);
add(ta);
alert = new Dialog(this, "找不到指定文件", true); // 定义一个警告提示对话框
alert.setLayout(new FlowLayout());// 设置窗体布局为流式布局
lab = new Label();
alert.add(lab);
alert.add(ok);
// 为按钮添加监听,相应操作
go.addActionListener(this);
ok.addActionListener(this);
tf.addKeyListener(new KeyAdapter() // 为文本域添加相应键盘的监听
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER) // 当按下回车键时
{
showDir(); // 自定义的一个函数,用来显示目录
}
}
});
setVisible(true);
}
public void actionPerformed(ActionEvent e) // 所有的动作监听器监听到的事件都到这里处理
{
if(e.getSource() == go) // 点击“转到”按钮
{
showDir();
}
else if(e.getSource() == ok) // 点击警告框上的“确定”按钮
{
alert.setVisible(false);
}
}
public void showDir()
{
String path = tf.getText(); // 获得文本域的内容
File f = new File(path); // 根据输入的路径创建一个文件对象
if(!f.exists())
{
lab.setText(path+"--找不到指定路径!");
alert.setBounds(350, 250, 300, 200);
alert.setVisible(true);
// throw new FileNotFoundException("文件找不到");
}
else
{
ta.setText(""); // 清除多行文本区的内容,准备显示下一个遍历的目录
int count = 1;
for(File file : f.listFiles()) // 遍历指定目录
{
ta.append(count++ + "--"+file.getName());
ta.append("\n");
}
}
}
public static void main(String[] args)
{
new MyFrameTest("文件搜索");
}
}
如何将.java文件转成可执行文件?
前提:源文件应放入包中,即有package语句。
1.将源文件带包进行编译: javac -d 存放路径 类名.java
2.添加清单文件信息--新建一个文件,例mf.txt,写入以下内容:
Main-Class: 包名.类名(含主方法的类)
(要回车换行表示一行结束)
3.打jar包:jar -cvfm name.jar mf.txt 包名
经过上面三个步骤,java就编程可执行文件了!