图形界面的只是很多,同时也有很多高级的用法,这里只有基础的一些图形界面应用,新手上路特别好用
第一节 swing介绍
swing是java的一个图形框架布局管理器。图形界面的只是主要涉及到容器,组件和布局管理器,与用户交互的时候还涉及到事件概念
也就是说我们在这里主要是学的一个框架所有的我们看到的图形界面,包括按钮啊,图标啊什么的,全部都
是一个个放在框架里的原件。
第二节 JFrame容器
这里说一些比较简单的一些方法,我们不做过多的赘述,直接方代码:
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
public class no1{
public static void main(String[] args) {
JFrame jFrame = new JFrame("wangZX");
jFrame.setSize(800,600);
jFrame.setLocation(200, 100);
Container c = jFrame.getContentPane();
c.setBackground(Color.gray);
jFrame.setVisible(true);
}
}
首先导入的这些包我们在eclipse里面不需要死记硬背 Crit+Shift+O就是快捷导入当前所需要的包的方式。
我们可以看到,里面用到了几个方法,这几个方法从名字中就不难看出它的作用。先说最后的那个setVisible方法,
其实就是一个让我们创建的JFrame窗口现行的方法,而我们不难发现,当我们改背景颜色的时候,我们使用了一
个getContainer方法,返回了JFrame窗口中的一个容器,然后给改变颜色。在之后我们会做详细的解释,这里大
家要注意一下!
第三节 JButton方法
JButton jb = new JButton("YAO");
jFrame.add(jb);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这三句代码的意思是,第一句创建了一个名字叫做YAO的按钮,,第二句是把这个按钮添加进了我们上面代码片
段的JFrame容器里面。
第三局比较重要,一般是我们经常用的,含义就是我们在点击JFrame容器的×号时,连带着把程序也关闭。说的
比较抽象,其实我们在创建了一个JFrame容器之后,其实代码也在运行,然后如果不设置这个变量,那么我们
在点击关闭之后,只是把那个窗口关了,而这段代码还在运行。
第四节 Swing布局管理器
1、FlowLyout流水式布局
JButton jb = null;
//jFrame.setLayout(new FlowLayout());默认居中
jFrame.setLayout(new FlowLayout(FlowLayout.LEFT));
for(int i = 0;i<9;i++){
jb = new JButton(i+"");
jFrame.add(jb);
}
2、BorderLayout布局
jFrame.setLayout(new BorderLayout(5,5));//这里也可以放置间隙(5,5)就是间隔
jb = new JButton("ddd");
jFrame.add(jb,BorderLayout.EAST);
这个是在添加组件的时候确定方位
3、GridLayout布局 表哥布局
jFrame.setLayout(new GridLayout(10,8,5,5));
for(int i = 0;i<19;i++){
jb = new JButton(""+i);
jFrame.add(jb);
}
就是将界面画分成表格这个GridLayout方法前两个参数是表格的行和列数,剩下的两个是与上下边和左右边的间隔
4、绝对布局
据对布局就是直接指定这个按钮或者其他组件在窗口的位置
jFrame.setLayout(null);
JButton jb1 = new JButton("1");
JButton jb2 = new JButton("2");
jb1.setBounds(10, 10, 30, 20);
jb2.setBounds(80,80,30,21);
jFrame.add(jb1);
jFrame.add(jb2);
他的缺点就是按钮不能随着窗口的变化而变化。
第五节 JLable
用来放置文档和图标
JLabel jl = new JLabel("wangyi",JLabel.CENTER);
jFrame.add(jl);
第六节文本框组件
1、JTextField组件 文本框 就是输入文本的地方
jFrame.setLayout(new GridLayout(1, 2));
JLabel jl = new JLabel("Username");
JTextField jtf = new JTextField();
jFrame.add(jl);
jFrame.add(jtf);
2、JPasswordFeild 密码框
JPasswordField jp = new JPasswordField();
3、JTextArea 文本域
JTextArea jta = new JTextArea();
第七节 JPanel轻量级容器
什么是轻量级的容器,这个的作用就是把布局做的更加好看。一般是不会有人在Frame容器中直接家东西的,都是
在容器里再放一些小的容器,然后在加东西,这样更容易调控,惊了~
然后我们就开始进行实验咯:
public class no1{
public static void main(String[] args) {
JFrame jFrame = new JFrame("wangZX");
jFrame.setSize(800,600);
jFrame.setLocation(200, 100);
Container c = jFrame.getContentPane();
c.setBackground(Color.gray);
JPanel jp = new JPanel();
jp.setLayout(new GridLayout(3, 2,10,10));
jp.setBorder(new EmptyBorder(30, 31, 12, 31));//设置边距
jp.setSize(80, 80);
jFrame.add(jp);
JLabel jb1 = new JLabel("用户名: ");
JLabel jb2 = new JLabel("password: ");
JTextField jt = new JTextField();
JPasswordField jpf = new JPasswordField();
JButton jT1 = new JButton("LOG");
JButton jT2 = new JButton("CANNER");
jT1.setBounds(800, 600, 50, 50);
jp.add(jb1);
jp.add(jt);
jp.add(jb2);
jp.add(jpf);
jp.add(jT1);
jp.add(jT2);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
这一类东西还有好多方法,大家有空可以自己看JDK看着学一点,但是讲真,当我们真的想做一个东西的时候随
时查阅才是最关键的。就是书翻看只是为了有印象,等到真正需要用的时候我们在查阅也未尝不可。
第八节 Swing事件处理
很批塞的东西。事件是什么,简单的讲就是你的鼠标点了一下屏幕这就是一个事件,所以我们暂且可以肤浅的认为
事件就是当我们进行一些列自主操作时计算机对此的认知。
而事件的处理自然而然就是我们在这个事件发生后所相应的想让计算机做出的反应。
做到这个当然必须要有的就是监听类,这里我们演示代码是在界面中给一个按钮,点击差生一系列事件。
//监听类
class JButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//在屏幕上出现弹窗“。。。”
JOptionPane.showMessageDialog(null, "惊了,谁点我");
String a = e.getActionCommand();//返回这个一个事件的信息
System.out.println(a);
}
}
public class no1{
public static void main(String[] args) {
JFrame jFrame = new JFrame("wangZX");
jFrame.setSize(800,600);
jFrame.setLocation(200, 100);
Container c = jFrame.getContentPane();
c.setBackground(Color.gray);
JButton jb = new JButton("我是一个按钮");
jFrame.setLayout(null);
jb.setSize(200, 60);
jb.setLocation(10,10);
JButtonListener jpl = new JButtonListener();//创造监听对象
jb.addActionListener(jpl);//监听对象放到按钮上
jFrame.add(jb);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
这个是对一个按钮的监听,那么对于一个Frame对象来说的监听呢?
class MyWindow implements WindowListener{
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("open");
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("close");
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("be closed");
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("min");
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
}
这个就是那个所谓的窗口监听器,添加只需要:
MyWindow lll = new MyWindow();
jFrame.addWindowListener(lll);
这样就可以检测到对整体窗口进行的操作了!!!
然后在我的代码库里有我写的一个计算器的小程序,也是这个的一个很经典的作业,大家可以尝试一下。
新人博主,还不太会写,感觉自己写的有点水,可能只有我自己能看明白吧。哈哈,见谅,欢迎程序员好友815884631QQ