JFrame类
JFrame在javax.swing包内
JFrame顶层容器(每个应用程序中至少一个)
不能直接防止空间,需要获得内容面板,在内容面板上再添加其他控件
创建时要设置大小、容器可见度
//最简单/最原始的创建窗口方式
JFrame frame = new JFrame("窗体标题");
//设置窗体大小
frame.setSize(x, y);
//设置窗体的可见性
frame.setVisible(true);
//设置窗体关闭时的默认选项
frame.setDefaultCloseOperation(JFrame.常量参数);
//设置窗体相对位置(null就是居中)
frame.setLocationRelativeTo(null);
import javax.swing.*;
import java.awt.*;
public class JFrameDemo {
public static void main(String[] args) {
// 给窗体提供一个名称
JFrame frame=new JFrame("窗体标题");
//设置是否展示窗体
frame.setVisible(true);
/*
*窗体关闭规则
* EXIT_ON_CLOSE:设置关闭窗体停止程序
* DO_NOTHING_ON_CLOSE:没有任何操作
* HIDE_ON_CLOSE:关闭窗体但是不停止程序
* DISPOSE_ON_CLOSE:释放窗体资源
* */
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体的大小 单位是像素
frame.setSize(300,200);
// 设置窗体的坐标
frame.setLocation(200,200);
// 设置窗体坐标和大小
frame.setBounds(200,200,300,200);
// 获取窗体容器
Container container = frame.getContentPane();
// 设置窗体背景颜色
container.setBackground(Color.white);
// 创建标签
JLabel label = new JLabel("这是一个窗体");
// 将窗体添加到容器中
container.add(label);
// 将窗体从容器中删除
/*container.remove(label);*/
// 验证容器中的组件
container.validate();
// 让窗体重新的载入这个容器(与上一步具有相同的效果)
/*frame.setContentPane(container);*/
}
}
public static void main(String[] args){
//创建类的对象
JFrame win1 = new JFrame("飞机大战");
//设置窗体大小
win1.setSize(WIDTH,HEIGHT);
//设置窗口置顶
win1.setAlwaysOnTop(true);
//设置窗体居中
win1.setLocationRelativeTo(null);
//设置默认关闭形式
win1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗口显示
win1.setVisible(true);
}
JPenal类
抽象类,需继承了使用。
JFrame用来做主页面框架也可以用来做顶级窗体,要想把控件放在该界面中,必须把控件放在JPanel中,然后再把JPanel放在JFrame中,JPanel作为一个容器使用。
JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel
package b_image;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
/*
路径IO:
new File("") - 工程下
new File("getClassLoader") - 存在src下
new File("getResourceAsStream()") - 文件和所在类同一个包下
*/
public class JPanelDemo extends JPanel{
@Override
public void paint(Graphics g) {
//父类对象
super.paint(g);
//setBackground(Color.BLACK);
//g.drawString("hello",200,300);
//获取图片资源
try {
BufferedImage bg = ImageIO.read(
JPanelDemo.class.
getResourceAsStream
("pic/background.png"));
g.drawImage(bg,0,0,null);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//创建类的对象
JFrame win1 = new JFrame("飞机大战");
//win.setTitle("");
win1.setSize(400,600);
//设置居中
//设置置顶
win1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建画板对象
JPanelDemo panel = new JPanelDemo();
win1.add(panel);
//设置窗口显示1
win1.setVisible(true);
}
}