如何用Java设计一个简单的窗口界面
- 一、前言
- 二、简单了解
- 1.Swing简介
- 2.框架(frame)
- 3.层次
- 三、步骤
- 1.打开eclipse,依次创建项目,包,类。
- 2.代码
- 2.1最简单的可见框架
- 2.2稍微上个色
一、前言
啊,前面写的太草率了,我也是本学期才接触Java,自己也没有很理解,有点突兀,我会每过几天综合学到的东西做出完善。
Java在前面的篇章里学的都是键盘输入,控制台显示结果,就很单调,我还经常纳闷是敲的啥代码,就能把图片敲出来,也没地方插入图片,又不是VB直接塞进去(原非计算机专业,当时有门课是VB)。现在接触到了图形用户界面(GUI),哦,原来是可以的,感觉就很神奇。
二、简单了解
1.Swing简介
我了解到的一些是,Java下面最开始只有一个 AWT包负责基本GUI程序设计,后来又研究出来了一个Swing包,但不是替代,是基于AWT架构之上,提供了更厉害的用户界面组件。好像Eclipse集成开发环境还有一种SWT的包,我暂时还没用到,后面碰到了再补充。
2.框架(frame)
在Java中,顶层窗口被称为框架,顶层窗口就是没有包括在其他窗口中的窗口,覆盖其他窗口,但却没有其他窗口能够挡住它。
在AWT中用Frame来描述顶层窗口,在Swing中用JFrame来描述顶层窗口,包含若干个改变框架外观的方法,同时通过继承JFrame,又获得了JFrame的各个超类(比如Window类)的许多用于处理框架的大小和位置的方法。绝大多数Swing组件类都以"J"开头,如果忘记了J(如Frame,Button等属于AWT组件类),可能也会正常编译和运行,但是混在一起使用将会导致视觉和行为的不一致。
- JFrame() 创建一个无标题的窗口
- JFrame(String s) 创建一个标题为 s 的窗口
- public void setTitle(String s)用于改变标题栏的名字
我试过以上这两种都可以给框架加名字
- public void setBounds(int a,int b,int width,int height)设置窗口的初始位置是(a,b),即距离屏幕最左方a个像素,距离屏幕最上方b个像素,窗口的宽是 width,窗口的高是 height。
- public void setSize(int width,int height)设置窗口的大小。
- public void setLocation(int x,int y)设置窗口的显示位置,默认位置为(0,0)。
setBounds(x, y, width, height)和setSize(width,height);setLocation(x, y);是等价的
这里指的是JFrame这种顶层组件,x,y相对的是屏幕的坐标,如果这个组件不是顶层组件,那么 x,y相对的是容器的坐标。
- public void setBackground(color.red)设置窗体背景颜色为红色
- public void setVisible(true/false)设置窗口是否可见,显示或隐藏窗口,默认是不可见的。
- public void setResizable(true/false)设置窗口是否可以调整大小,默认可调整。
- public void dispose()撤销当前窗口,并释放当前窗口所使用的资源。
- public void setExtendedState(int state)设置窗口的扩展状态,其中参数state取JFrame类中的下列类常量:
MAXIMIZED_HORIZ (水平方向最大化)
MAXIMIZED_VERT (垂直方向最大化)
MAXIMIZED_BOTH (水平、垂直方向都最大化) - public void setDefaultCloseOperation(int operation)该方法用来设置单机窗口右上角的关闭图标后,程序会做出怎样的处理,特别是在多个框架时。其中的参数operation取JFrame类中的下列int型static常量,程序根据参数operation取值做出不同的处理:
DO_NOTHING_ON_CLOSE (什么也不做,当你点击关闭的时候)
HIDE_ON_CLOSE(隐藏当前窗口,当你点击关闭的时候)
DISPOSE_ON_CLOSE(隐藏当前窗口,并释放窗体占有的其他资源,当你点击关闭的时候)
EXIT_ON_CLOSE(结束窗口所在的应用程序,即窗口退出,程序退出,当你点击关闭的时候)
3.层次
有没有大佬推荐一下画图的东西…
三、步骤
1.打开eclipse,依次创建项目,包,类。
2.代码
2.1最简单的可见框架
import javax.swing.JFrame;
public class Test{
public static void main (String[] args) {
JFrame window = new JFrame();//创建一个叫无名窗口
window.setBounds(222,333,333,222);//设置窗口在屏幕上的位置和大小。距离屏幕左侧123个像素,上方345个像素,窗口宽666,高520
window.setVisible(true);//设置窗口可见
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出程序
}
}
2.2稍微上个色
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
/*
以上也可以写成
import java.awt.*;
import javax.swing.*;
*/
public class Test{
public static void main (String[] args) {
JFrame window1 = new JFrame("堵小配的窗口");//创建一个叫“堵小配的窗口”的窗口
JFrame window2 = new JFrame("韩小冷的窗口");
Container con = window1.getContentPane();
con.setBackground(Color.yellow);//设置窗口的背景色
window1.setBounds(123,345,666,520);//设置窗口在屏幕上的位置和大小。距离屏幕左侧123个像素,上方345个像素,窗口宽666,高520
window2.setBounds(888,345,456,521);
window1.setVisible(true);//设置窗口可见
window1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//释放当前窗口
window2.setVisible(true);
window2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出程序
}
}
//必须是在窗口的内容面板上上色,无法直接上色
window1.setBackground(Color.yellow);
//也可以自己配色
color c = new Color(200,100,120);
con.setBackground(c);
//可以自己尝试分别关闭两个窗口,观察效果是否相同
window1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
window2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);