Java中Swing编程JFrame窗口的使用
Java中GUI程序的编写离不开Swing和AWT编程。Swing组件包含JFrame, JApplet, JDialog和JWindow等容器,我们简单地学习下JFrame的基本使用。
·
Java中GUI程序的编写离不开Swing和AWT编程。
二者的区别和联系:
AWT(Abstract Window Toolkit):抽象窗口工具包,早期编写图形界面应用程序的包。
Swing :为解决 AWT 存在的问题而新开发的图形界面包。Swing是对AWT的改良和扩展。
AWT的图形函数与操作系统提供的图形函数有着一一对应的关系。当我们利用 AWT构件图形用户界面的时候,实际上是在利用操作系统的图形库。AWT是依靠本地方法来实现功能的,所以AWT控件称为“重量级控件”。 而Swing ,不仅提供了AWT 的所有功能,还用纯粹的Java代码对AWT的功能进行了大幅度的扩充。由于 Swing是用纯粹的Java代码来实现的,因此Swing控件在各平台通用。因为Swing不使用本地方法,故Swing控件称为“轻量级控件”。
Swing组件包含JFrame, JApplet, JDialog和JWindow等容器,我们简单地学习下JFrame的基本使用。
使用:
继承JFrame类,初始化窗口,添加按钮、显示框、文本框等,设置大小、设置可见、设置字体、添加响应事件,将容器JFrame实例设置为可见。
代码如下:
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class myFrame extends JFrame {
private static final long serialVersionUID = 1L;
static String path = null;
public static void main(final String[] args) {
// 画出窗口
final JFrame frame = new myFrame();
frame.setLayout(null);
frame.setTitle("myFrame");
frame.setSize(400, 170);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 添加按钮
final JButton btn1 = new JButton("浏览");
final JButton btn2 = new JButton("确定");
btn1.setBounds(80, 70, 60, 25);
btn2.setBounds(240, 70, 60, 25);
btn1.setVisible(true);
btn2.setVisible(true);
frame.add(btn1);
frame.add(btn2);
// 设置字体
final Font font = new Font("宋体", Font.BOLD, 11);
btn1.setFont(font);
btn2.setFont(font);
// 添加显示框
final JLabel label = new JLabel("路径:");
label.setBounds(60, 20, 50, 25);
label.setVisible(true);
label.setFont(font);
frame.add(label);
// 添加文本框
final JTextField textField = new JTextField();
textField.setBounds(120, 20, 190, 22);
textField.setVisible(true);
frame.add(textField);
frame.setVisible(true);
// 为按钮添加事件
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
final int returnVal = chooser.showOpenDialog(btn1);
if (returnVal == JFileChooser.APPROVE_OPTION) {
final File file = chooser.getSelectedFile();
path = file.getAbsolutePath();
textField.setText(path);
}
}
});
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final myFrame myFrame = new myFrame();
myFrame.addInfo(path);
}
});
// 为文本框添加事件
textField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
if (new File(textField.getText()).isDirectory()) {
path = textField.getText();
} else {
final myFrame myFrame = new myFrame();
myFrame.addInfo("路径名错误");
}
}
});
}
public void addInfo(final String string) {
final JFrame f = new JFrame("提示");
f.setLayout(null);
f.setBounds(40, 40, 300, 100);
f.setVisible(true);
final JLabel label = new JLabel(string);
label.setBounds(30, 20, 250, 20);
final Font f1 = new Font("宋体", Font.BOLD, 12);
label.setFont(f1);
f.add(label);
}
}
测试:
- 通过文本框输入错误路径并回车:
- 通过选择框选择正确路径:
更多推荐
已为社区贡献1条内容
所有评论(0)