创建第一个窗口
package com.apple.GUI;
import javafx.scene.layout.Pane;
import java.awt.*;
public class TestFrame {
public static void main(String[] args) {
// 创建框架
Frame frame = new Frame();
frame.setVisible(true);
frame.setLocation(200,200);
frame.setBackground(Color.white);
frame.setSize(400,400);
String s = new String();
s = "我的第一个窗口";
frame.setTitle(s.toString());
}
}
- 通过new 一个 Frame的对象,调用这个类中的各种方法
- 设置可视化操作,位置,背景颜色,大小,标题
- 效果
实现多窗口
package com.apple.GUI;
import javax.swing.*;
import java.awt.*;
public class CopyFrame {
public static void main(String[] args) {
// 创建多个可视化窗口
Frames frame1 = new Frames(100,200,300,400,Color.BLACK);
Frames frame2 = new Frames(300,200,300,400,Color.WHITE);
Frames frame3 = new Frames(100,200,300,400,Color.RED);
Frames frame4 = new Frames(100,200,300,400,Color.GREEN);
Frames frame5 = new Frames(100,200,300,400,Color.LIGHT_GRAY);
}
}
class Frames extends Frame {
// 可能存在多个窗口
static int nums = 0;
// 先设置无参构造
public Frames(int x,int y,int w,int h,Color color){
super("Frames"+ ++nums);
setVisible(true);
setBounds(x,y,w,h);
setBackground(color);
}
}
- 创建一个Frame的子类继承它的方法,以便与更好地调用和更改窗口属性
- 从而实现多个不同属性的窗口
- 效果
体验面板Panel
package com.apple.GUI;
import javafx.scene.layout.Pane;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
// Pane 面板
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
// 布局的概念
Panel panel = new Panel();
// 添加窗口基础属性
String title;
title = "贪吃蛇 create by Yst 1.0version";
frame.setTitle(title.toString());
frame.setLayout(null);
frame.setLocation(200,300);
frame.setVisible(true);
frame.setBackground(Color.WHITE);
frame.setBounds(200,200,400,400);
// 添加面板
panel.setBounds(50,50,300,300);
panel.setBackground(Color.green);
frame.add(panel);
// 添加监听,实现窗口可关闭
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
- 为单调的窗口添加布局
- frame添加监听使鼠标可以关闭打开的窗口
- 效果
-
体验三种布局方式和按钮操作
package com.apple.GUI;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import static java.awt.BorderLayout.WEST;
/*布局管理器
1.流式
2.东西南北中
3.表格
*/
public class TestLayOut {
public static void main(String[] args) {
Frame frame = new Frame();
// 窗口属性
frame.setTitle("按钮版 CREATE BY YST 2.0 VERSION");
frame.setLocation(200,300);
frame.setBounds(50,50,400,400);
frame.setVisible(true);
// 创建一个两行一列的表格
frame.setLayout(new GridLayout(2,1));
// 创建四个面板
Panel panel1 = new Panel(new BorderLayout()) ;
Panel panel2 = new Panel(new GridLayout(2,1));
Panel panel3 = new Panel(new BorderLayout());
Panel panel4 = new Panel(new GridLayout(2,2));
// 添加按钮
//边界布局,东西南北中
panel1.add(new Button("Primary System"),BorderLayout.EAST);
panel1.add(new Button("Intermediate System"),BorderLayout.WEST);
panel2.add(new Button("Recharge Entrance"));
panel2.add(new Button("Assisted purchase"));
panel1.add(panel2,BorderLayout.CENTER);
panel3.add(new Button("Settings"),BorderLayout.EAST);
panel3.add(new Button("About"),BorderLayout.WEST);
for (int i = 0; i < 4; i++) {
panel4.add(new Button("More Functions"+i));
}
panel3.add(panel4,BorderLayout.CENTER);
frame.add(panel1);
frame.add(panel3);
//添加监听
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
-
通过对frame的拆分和面板的分布实现按钮位置的不同改变
-
注意将面板互相添加时容易引发错误
-
效果
-