JAVA进阶(1)--GUI编程

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);
            }
            
        });
        
    }
    
}
​

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值