Swing程序设计
Swing用于开发桌面窗体程序用于JDK的第二代GUI框架,其功能比JDK第一代GUI框架AWT更为强大,性能更加优良。但因为Swing技术推出时间太早,七性能,开发效率等不及一些其他的留下技术,所以目前市场大多数桌面窗体都不是由java开发的,Swing技术也书简被广大开发人员放弃了
不过Swing是JDK自带的功能,并且能非常好的体现出java语言在面对对象,接口时间等方面设计模式,又能提供直观的呈现运行效果,有所以本书还能纳入此内容,本章不能深入的讲解Swing技术,仅会介绍一些常用组件的使用方法
Swing中大多数数组件均为轻量级组件,使用Swing开发出的窗体风格与当前平台(如WindowsLinux等)的窗体风格保持一致 本章讲解了主要介绍了Swing的基本要素,包括窗体的布局,容器,常用组件,如何创建表格等内容
18.2常用窗体
创建一个不可的,具有标题的窗体如下:
JFrame jf =new JFrame("登入系统");
Container container = jf.getContenPane();
在创建窗体后,先调用getContentPane()方法将窗体转换为容器,再使用add()方法或者remove()方法想容器中添加组件或者删除容器中的组件,向容器中添加按钮 代码如下:
JButton okBtn = new JButton("确定");
container.add(okBth);//添加按钮
container.remove(okBth);//删除容器中的按钮
创建窗体后,要对窗体惊醒设置 设置大小 位置,是否可见等等
setBounds(int x,int y,int width,int leight)
//设置窗体左上角在屏幕中的坐标(x,y),窗体的宽度为widttth,窗体的高度为height。
setLocation(int x,int y);//设置窗体左上角在屏幕中的坐标为(x,y)
setSize(int width,int heigth);设置窗体的宽度为width,高度为height
setVisibale(boolean b);//设置窗体是否可见。b为true时窗体为可见;b为false时窗体为不可见
setDefaultCloseOperation(int operation);
//设置窗体的关闭方式,默认值为DISPOSE_ON_CLOSE Java语言提供了多种窗体的关闭方式,
JFrame窗体关闭的几种方式
窗体关闭方式 | 实现功能 |
DO_NOTHING_ON_CLOSE | 关闭窗体时,不触发任何操作 |
DISPOSE_ON_CLOSE | 关闭窗体时,释放窗体资源,窗体会消失但是程序不会停止 |
HIDE_ON_CLOSE | 关闭窗体时,仅隐藏舱体,不释放资源 |
EXIT_ON_CLOSE | 关闭窗体时,释放窗体资源并关闭程序 |
创建一个JFreamTest类 在JFreamTest类中创建一个内容为“这是JFrame窗体”后把这个白哦前添加到窗体中 代码如下:
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class jFreamTest {
public static void main(String[] args) {
JFrame jf = new JFrame();//创建一个窗口对象
jf.setTitle("创建一个JFrame 窗体");//设置窗口标题
Container container = jf.getContentPane();//获取主容器
JLabel jl = new JLabel("这是一个JFrame 窗体");//一个文本标签
jl.setHorizontalAlignment(SwingConstants.CENTER);//将标签上的文字居中
container.add(jl);//将标签添加到著容器中
jf.setSize(300,150);//设置窗体宽高
jf.setLocation(320,240);//设置窗体在屏幕中出现的位置
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭窗体则停止程序
jf.setVisible(true);//让窗体展示出来
}
}
代码图如下:
运行结果如下:
18.2.2JDialog对话框
JDialong对话框继承了java.awt.Dialog类,其功能是从一个窗体弹出另一个窗体,如使用IE浏览器时弹出的确定对话框JDialog对话框与JFrame窗体类似,被使用也需要先调用getContentPane()方法Jdialog对话捐给转换为容器再对JDialog对话框进行设置
public JDialong();创建一个没有标题和父窗体的对话框
public JDialong(Frame f);//创建一个没有标题的,但有父窗体的对话框
public JDialong(Frame f ,boolean model);//创建一个没有标题但指定
父窗体和模式的对话框 如果model为true,那么弹出对话框后,用户无法操作父窗体
public JDialong(Frame f ,String title);
//创建一个指定标题和父窗体的对话框
public JDialong(Frame f ,boolean model);//创建一个指定标题 父窗体和模式的对话框
例题在弹窗中弹出对话框:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MyJDialog extends JDialog{//自定义对话框类 继承了JDialog
public MyJDialog(MyFrame frame) {
//调用父类构造方法,第一个参数是父窗体,第二个参数是窗体标题 //第三个参数是表示阻塞父窗体
super(frame,"第一个JDialog窗体",true);
Container container=getContentPane();//获取主容器
container.add(new JLabel("这是一个对话框"));//在容器中添加标签
setBounds(120,120,100,100);//设置对话框在桌面先是的坐标和大小
}
}
public class MyFrame extends JFrame {//自定义窗体类 继承JFrame
public MyFrame() {//窗体的构造方法
Container container=getContentPane();//获得窗体的构造方法
container.setLayout(null);//容器使用绝对布局
JButton bl=new JButton("弹出对话框");//创建一个按钮
bl.setBounds(10,10,100,21);//定义按钮在容器中的坐标和大小
bl.addActionListener(new ActionListener() {//为按钮添加单击事件
public void actionPerformed(ActionEvent e) {//单机事件的触发方法
MyJDialog dialog=new MyJDialog(MyFrame.this);//创建MYJDialo对话框
dialog.setVisible(true);//使对话框可见
}
});
container.add(bl);//将按钮添加到容器中
setSize(200,200);//窗体的宽高
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭窗体则停止程序
setVisible(true);//使窗体可见
;}
public static void main(String[] args){
new MyFrame();
}
}
代码图如下:
运行结果图:
18.2.3JOptionPane小型对话框
一个非常便捷的小型对话框,该类用于创建对话框的方法都是静态方法,无需创建对象即可弹出,在日常开发中经常使用该类唐初提示确认用户需求
4种创建对话框的方法
方法 | 描述 |
showConfirmDialog() | 确认框,询问一个确认问题,如yes/no/cancel |
showIputDialog() | 输入框,可以让用户向程序输入某些之 |
showMessageDialog() | 通知框,告知用户某事已经发生 |
showOptionDialog() | 自定义对话框,集合了上述3种对话框的全部功能 |
自定义对话框:
public static int showOptionDialog( Component parentComponent
Oject message;
String title;
int optionType;
int messageType;
lcon icon;
Object[] options;
Object initialValue)
}
参数如下:
parentComponent:知名对话框在哪个窗体上显示,如果传入就提的窗体对象和,
对话框会在该窗体居中位置先是 如果传入的是null则会在屏幕中间弹出对话框
message:提示信息
title:对话框的标题
optionType:指定可用对话框的选项的整数
messageType:指定消息种类的整数,主要确定来字可插入外观的图标
options:只是用户可能选择的对象组成的数组。如果对象是组件,则可以正确的呈现,非String对象使用toString方法呈现,如果此参数为null,则由外观确定选项
initiaIValueL表示对话框默认的对象只用options时才有意义,可以为null
以下有四种对话框的例题 代码如下:
弹出会话框
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
public class Demo {
public static void main(String[] args) {
Object o[]= {new JButton("是的"),new JButton("再想想")};//按钮对象的Object数组
Icon icon = new ImageIcon("src/注意.png");//获取图标对象
JOptionPane.showOptionDialog(null,
"你准备好了吗?",
"注意了!",
JOptionPane.DEFAULT_OPTION,
JOptionPane.DEFAULT_OPTION,
icon,o,null);
}
}
代码图以及运行结果图:
确认框:
import javax.swing.JOptionPane;
public class Demo1 {
public static void main(String[] args) {
int answer=JOptionPane.showConfirmDialog
(null, "确定离开吗?","标题",JOptionPane.YES_NO_OPTION);
//18.4
}
}
代码图以及运行结果图:
输入框:
import javax.swing.JOptionPane;
public class Demo3 {
public static void main(String[] args) {
String name=JOptionPane.showInputDialog(null,"请输入您的姓名");
}
}
代码图以及运行结果图:
警告对话框:
import javax.swing.JOptionPane;
public class Demo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
JOptionPane.showConfirmDialog(null,
"您与服务器断开了链接",
"发生错误",
JOptionPane.ERROR_MESSAGE);
}
}
运行结果图以及代码图