JAVA进阶(1)
GUI 编程
GUI核心技术:Swing 和 AWT
但界面不美观,且需要jre环境
awt
frame窗口
frame是一个顶级窗口
package Test;
import java.awt.Color;
import java.awt.Frame;
public class TestFrame {
public static void main(String[] args) {
/* 新建一个窗口 参数为窗口左上角标题文字 */
Frame frame = new Frame("标题");
/* 设置可见性 boolean类型 */
frame.setVisible(true);
/* 设置窗口大小 长、宽 默认原点为屏幕左上角 */
frame.setSize(400, 400);
/* 设置原点 */
frame.setLocation(100, 100);
//也可以直接调用setBounds(x,y,w,h)同时设置原点和长宽
/* 设置背景颜色 */
frame.setBackground(new Color(88, 88, 88));;
/* 设置大小固定 boolean类型 */
frame.setResizable(false);
//关闭窗口功能未实现,结束程序强制关闭
}
}
panel面板
panel无法单独显示,必须添加到某个容器中
package Test;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
/* panel面板 放在窗口里 */
Panel panel = new Panel();
/* 设置布局 否则面板占据整个窗口*/
frame.setLayout(null);
/* 设置窗口的坐标和颜色 */
frame.setBounds(300, 300, 500, 500);
frame.setBackground(Color.BLACK);
/* 设置面板的坐标和颜色 */
panel.setBounds(50, 50, 400, 400);
panel.setBackground(Color.GRAY);
/* 将面板加入窗口里 写东西放在面板内规划即可 */
frame.add(panel);
/* 设置可见性 */
frame.setVisible(true);
/* 监听事件 监听窗口关闭事件 */
/* 适配器模式 */
frame.addWindowListener(new WindowAdapter() {
/*窗口关闭的时候需要做的事情 */
public void windowClosing(WindowEvent e) {
/* 结束程序 */
System.exit(0);
}
});
}
}
布局管理器
所有排布形式均可拆分为三大基本布局的组合
1. 流式布局
package Test;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestFlowLayout {
/**
* 流式布局,按钮按顺序排列(二维数组)
* @param args
*/
public static void main(String[] args) {
Frame frame = new Frame();
/* 组件 按钮 参数为label 即按钮上的文字内容 */
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
/* 设置为流式布局 */
/* FlowLayout中参数默认为Center居中 可以更改 */
//居左:frame.setLayout(new FlowLayout(FlowLayout.LEFT));
frame.setLayout(new FlowLayout());
/* 将按钮添加至窗口 */
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setBackground(Color.PINK);
frame.setSize(400, 400);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
2. 东西南北中
package Test;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestBorderLayout {
/**
* 东西南北中布局,一般与流式布局嵌套使用
* @param args
*/
public static void main(String[] args) {
Frame frame = new Frame();
Button east = new Button("East");
Button west = new Button("West");
Button north = new Button("North");
Button south = new Button("South");
Button center= new Button("Center");
frame.add(east, BorderLayout.EAST);
frame.add(west, BorderLayout.WEST);
frame.add(north, BorderLayout.NORTH);
frame.add(south, BorderLayout.SOUTH);
frame.add(center, BorderLayout.CENTER);
frame.setSize(400, 400);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
3. 表格布局
package Test;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestGridLayout {
/**
* 表格布局,按钮填充表格排列
* @param args
*/
public static void main(String[] args) {
Frame frame = new Frame();
Button button1 = new Button("button1");
Button button2 = new Button("button1");
Button button3 = new Button("button1");
Button button4 = new Button("button1");
Button button5 = new Button("button1");
Button button6 = new Button("button1");
/* 表格布局 GridLayout(rows,cols) */
frame.setLayout(new GridLayout(3, 2));
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
frame.add(button6);
/* pick函数自动填充,调整合适的大小 */
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}