JAVA GUI布局学习

本文主要探讨JAVA GUI中Frame和Panel的使用,Frame作为主窗口,采用默认的BorderLayout布局,而Panel作为功能模块,使用FlowLayout进行布局管理。
摘要由CSDN通过智能技术生成

Frame是框架,这个是要实现的功能界面的布局,默认管理器“BorderLayout”;
Panel是面板,这个是要实现的某个功能模块的具体实现,默认管理器“FlowLayout“;

package com.example;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.HeadlessException;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;

/**
 * Created by jiawei on 2018/8/11.
 */

public class GuiDemo extends JFrame {
    public GuiDemo() throws HeadlessException {
        //设置面板
        JPanel jp1 = new JPanel();
        JPanel jp2 = new JPanel();
        JPanel jp3 = new JPanel();
        JPanel jp4 = new JPanel();
        JPanel jp5 = new JPanel();
        JPanel jp6 = new JPanel();

        JPanel jp_table1 = new JPanel();
        JPanel jp_table2 = new JPanel();
        JPanel jp_table3 = new JPanel();

        //复选框
        JCheckBox box1 = new JCheckBox("足球");
        JCheckBox box2 = new JCheckBox("篮球");
        JCheckBox box3 = new JCheckBox("网球");

        //文本
        JLabel label1 = new JLabel("你喜欢的运动");
        JLabel label2 = new JLabel("你的性别");
        JLabel label3 = new JLabel("你喜欢的城市");
        JLabel label4 = new JLabel("你喜欢的明星");
        JLabel label5 = new JLabel("卡1的内容哟");
        JLabel label6 = new JLabel("卡2的内容哟");
        JLabel label7 = new JLabel("卡3的内容哟");

       //ButtonGroup 的作用:对多个radio选项只能单选
        ButtonGroup bg = new ButtonGroup();
        JRadioButton radio1 = new JRadioButton("男");
        JRadioButton radio2 = new JRadioButton("女");
        bg.add(radio1);
        bg.add(radio2);

        //按钮
        JButton but1 = new JButton("注册");
        JButton but2 = new JButton("登录");

        //下拉选项框
        String[] city = {"深圳","广州","北京","上海","重庆","广西","黄晓明","李冰冰","张彬彬","热巴","李晨","郑凯","邓超","C罗","梅西","詹姆斯","乔丹","葛优","吴亦凡","周星驰"};
        JComboBox<String> jbb = new JComboBox<String>(city);

        //列表框 JList 以列表的形式展示多个选项,允许用户选择一个或多个选项。
        String[] superStar = {"黄晓明","李冰冰","张彬彬","热巴","李晨","郑凯","邓超","C罗","梅西","詹姆斯","乔丹","葛优","吴亦凡","周星驰"};
        JList<String> jl = new JList<String>(superStar);
        jl.setVisibleRowCount(1);
        //JList本身不支持滚动,要滚动必须放到JScrollPane中
        JScrollPane jsp = new JScrollPane(jl);

        JTabbedPane jtablePane = new JTabbedPane();
        jp_table1.add(label5);
        jp_table2.add(label6);
        jp_table3.add(label7);
        jtablePane.add("卡1",jp_table1);
        jtablePane.add("卡2",jp_table2);
        jtablePane.add("卡3",jp_table3);

     //当前这个窗口框架设置的布局是5行1列
        setLayout(new GridLayout(6,1));
        //面板的控件默认边界布局的
        jp1.add(label1);
        jp1.add(box1);
        jp1.add(box2);
        jp1.add(box3);

        jp2.add(label2);
        jp2.add(radio1);
        jp2.add(radio2);

        jp3.add(but1);
        jp3.add(but2);

        jp4.add(label3);
        jp4.add(jbb);

        jp5.add(label4);
        jp5.add(jsp);

        add(jp1);
        add(jp2);
        add(jp3);
        add(jp4);
        add(jp5);
        add(jtablePane,BorderLayout.CENTER);
    }

    public static void main(String[] args){
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                GuiDemo demo = new GuiDemo();
                demo.setTitle("Sport Demo");
                demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                demo.setLocationByPlatform(true);
                demo.setSize(new Dimension(400,500));
                demo.setLocationRelativeTo(null);
                demo.setVisible(true);
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值