hello 大家好,作为一只单身程序员,我只能说刚刚踏入了程序员的门槛,还有许多知识要学–比如说…想说的太多,我却欲言又止!
少罗嗦直接看东西—
带着问题去学习才能更高效的记忆—理解万岁这句话还真是万能的.
第一个问题(包含两小问)—
1,java中如何建立一个窗口----2,新建的窗口怎么看不到?
我先介绍两种方式
frame 和jframe
public class Tank {
public static void main(String[] args) {
Frame frame = new Frame();
JFrame jf = new JFrame();
运行后啥也看不到–
因为窗口加载到内存中,没有设置显示,所以看不到 啥也看不到,所以没法截图–还有一点,运行之后因为没有用到,可能被 JVM当作垃圾回收了;
设置为可见状态—
public class Tank {
public static void main(String[] args) {
Frame frame = new Frame();
//frame.show();
frame.setVisible(true);
JFrame jf = new JFrame();
//jf.show();//老的方法
jf.setVisible(true);//新方法
show()方法比较古老–现在已经不用,
建议用setVisible()来控制窗口是否可见;
运行结果如图–
由于没有设置大小和位置,两个窗口是重合的,而且大小也不能被改变;
其实这是两个窗口–
构造方法----
第二个问题,(包含三小问)—
1,窗口的标题怎么设置?
2,窗口的大小怎么设置?
3,窗口怎么关闭?跟我们平时一样吗?
package com.gavin.tank;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
/**
* @author : Gavin
* @date: 2021/7/6 - 07 - 06 - 19:08
* @Description: com.gavin.tank
* @version: 1.0
*/
public class Tank {
public static void main(String[] args) {
Frame frame = new Frame();
//frame.show();
frame.setVisible(true);
frame.setResizable(true);
frame.setTitle("我的窗口1");
frame.setBounds(50,50,400,400);
JFrame jf = new JFrame();
//jf.show();//老的方法
jf.setVisible(true);//新方法
jf.setResizable(false);
frame.setTitle("我的窗口2");
jf.setBounds(200,200,500,500);
}
}
以上设置完毕,我们发现没法关闭窗口—点击右上角 X号,没反应—
关闭窗口需要加入一个窗口监听器–addWindowListener();
该方法要求我们传入一个窗口对象–
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
});
写完之后会自动带出几种实现方法----
往前倒腾一下–
WindowListener为一个接口,匿名类实现了该对象—
这样做的好处是运行一次即结束,垃圾回收机制会自动将他回收,运行完毕后不占地方;
根据方法我们就知道方法的含义了,这里只说我们现在长用的–打开关闭
关于windowsListener,他还有自己的实现类–不过是个抽象类,抽象类的好处是—可以根据需要区覆写接口中的方法
下面贴一下完整代码–
package com.gavin.tank;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
/**
* @author : Gavin
* @date: 2021/7/6 - 07 - 06 - 19:08
* @Description: com.gavin.tank
* @version: 1.0
*/
public class Tank {
public static void main(String[] args) {
Frame frame = new Frame();
//frame.show();
frame.setVisible(true);
frame.setResizable(true);
frame.setTitle("我的窗口1");
frame.setBounds(50,50,400,400);
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
});
JFrame jf = new JFrame();
//jf.show();//老的方法
jf.setVisible(true);//新方法
jf.setResizable(false);
jf.setTitle("我的窗口2");
jf.setBounds(200,200,500,500);
jf.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
}
});
}
}
未完待续–
友情提醒–关于swing编程现在真的用的很少,感兴趣可以看一下,不感兴趣也最好了解一下.
写在本篇最后—
写这个的目的是什么呢?
开发小游戏–以便熟练掌握java基础知识,验证自己掌握多少,仅此而已