在设置窗口之前,先说明java中像素的定位点,我们屏幕左上角为(0,0),x往右边为正,y向下为正,这和我们平常的数学y轴往下为负不一样。就简单来说吧,只要你设置都为整数就是在我们屏幕里面,我们能看到的。一方为负数就看不到。
实例一:基本窗口显示
实例一代码:
package com.uplooking.javase.ch17;
import java.awt.Color;
import java.awt.Frame;
public class MyFranmeTest {
public static void main(String[] args) {
Frame frame =new Frame();
//设置窗体的大小,单位 像素
frame.setSize(600,400);
//设置标题
frame.setTitle("我的第一个java窗体");
//设置不能改变大小:就是你不能用鼠标拉伸他
frame.setResizable(false);
//设置背景颜色
Color c1 =new Color(100,50,99);
frame.setBackground(c1);
//设置一下位置
frame.setLocation(300,300);
//设置可见性,默认不可见:如果不设置可见你就看不见效果图
frame.setVisible(true);
}
}
实例二:显示多个不同窗口颜色
思路:有的同学觉得复制粘贴4个对吧?这又麻烦又费力。继承Frame
实例二代码:
package com.uplooking.javase.ch17;
import java.awt.Color;
import java.awt.Frame;
public class MyFranmeTest2 extends Frame {
//继承Frame类
//把改写的参数当做形参写在构造器内
public MyFranmeTest2(int x,int y,int width,int height,String title,Color c) {
//调用父类的构造器
super(title);
this.setBounds( x, y,width,height);
this.setBackground(c);
this.setResizable(false);
//这个设置必须在最后
this.setVisible(true);
}
public static void main(String[] args) {
int x =200,y=200;
MyFranmeTest2 m1 =new MyFranmeTest2(x,y,300,300,"第一个窗口",Color.RED);
MyFranmeTest2 m2 =new MyFranmeTest2(x+300,y,300,300,"第二个窗口",Color.green);
MyFranmeTest2 m3 =new MyFranmeTest2(x,y+300,300,300,"第三个窗口",Color.black);
MyFranmeTest2 m4 =new MyFranmeTest2(x+300,y+300,300,300,"第四个窗口",Color.BLUE);
}
}
Panel代码:
package com.uplooking.javase.ch17;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.LayoutManager;
import java.awt.Panel;
public class PanelTest1 {
public static void main(String[] args) {
Frame f1 =new Frame("面板类测试");
f1.setBounds(300,200,700,450);
//布局管理器
//LayoutManager
//重新设置Frame布局管理器为null,我要自己摆放,不需要布局管理器帮我摆放
//面板类
Panel p1 =new Panel();
f1.setLayout(null);
//按钮
Button btn1 =new Button("Login");
btn1.setSize(100,60);
btn1.setLocation(100,100);
//把按钮加入到面板中
p1.add(btn1);
p1.setSize(300,300);
//面板所在的位置
p1.setLocation(50,50);
p1.setBackground(Color.RED);
//把面板放入
f1.add(p1);
//设置可见
f1.setVisible(true);
}
}
这里我们为什么按钮不设置中文呢,设置中文会出现乱码问题,是因为内部操作系统不兼容,反正以后开发都不会用这种开发。
FlowLayout布局管理器
拉长之后
FlowLayout布局管理器代码:
package com.uplooking.javase.ch17;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.LayoutManager;
public class FlowLayoutTest {
public static void main(String[] args) {
Frame f1 =new Frame("布局管理器测试1");
//设置窗体的布局管理器为流式布局
f1.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));
//放100个按钮
for (int i = 0; i <100; i++) {
f1.add(new Button("button"+i));
}
f1.setBounds(300,250,600,500);
f1.setVisible(true);
}
}
BorderLayout 边框布局管理器
BorderLayout 边框布局管理器代码:
package com.uplooking.javase.ch17;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
public class BorderLayoutTest {
public static void main(String[] args) {
Frame f1 =new Frame("布局管理器演示:边框布局管理器");
//边框布局,50,50是彼此之间左右,上下的间距
f1.setLayout(new BorderLayout(50,50));
f1.add(new Button("submit"),BorderLayout.EAST);
f1.add(new Button("submit"),BorderLayout.WEST);
f1.add(new Button("submit"),BorderLayout.NORTH);
f1.add(new Button("submit"),BorderLayout.SOUTH);
f1.add(new Button("submit"),BorderLayout.CENTER);
f1.setBounds(200,30,900,700);
f1.setVisible(true);
}
}
GridLayout 网格布局管理器
GridLayout 网格布局管理器代码:
package com.uplooking.javase.ch17;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
public class GridLayouTest {
public static void main(String[] args) {
Frame f1 =new Frame("布局管理器演示:网格布局管理器");
//格式布局 5,5 表示5行5列 如果超出5*5=25个 多的少的都不要了,主要是以行为主,行变列变,列变行不变
f1.setLayout(new GridLayout(5,5,10,20));
for (int i = 0; i < 30; i++) {
f1.add(new Button("button"+i));
}
f1.setBounds(200,30,900,700);
f1.setVisible(true);
}
}