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