GUI学习
-
Frame是一个顶级窗口
-
Panel无法单独显示,必须添加在某个容器中
-
布局管理器
-
流失布局
-
东西南北中
-
表格
-
-
大小、定位、颜色、可见性、监听
Swing
3.1窗口和面板
package com.lei.lesson04;
import javax.swing.*;
import java.awt.*;
public class JFrameDemo {
//init();初始化
public void init(){
//顶级窗口
JFrame frame = new JFrame("这是一个JFrame窗口");
frame.setVisible(true);
frame.setBounds(100, 100, 200, 200);
//设置文字JLable
JLabel label=new JLabel("欢迎学习",SwingConstants.CENTER);
frame.add(label);
frame.getContentPane().setBackground(Color.yellow);
//文本标签居中
//label.setHorizontalAlignment(SwingConstants.CENTER);
//关闭事件
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
//建立一个窗口
new JFrameDemo().init();
}
}

3.2弹窗
package com.lei.lesson04;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//主窗口
public class DialogDemo extends JFrame {
public DialogDemo(){
this.setVisible(true);
this.setSize(700,500);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//JFrame,容器
Container container=this.getContentPane();
//绝对布局
container.setLayout(null);
//按钮
JButton button = new JButton("点击弹出一个对话框");
button.setBounds(30,30,200,50);
container.add(button);
//点击时弹出
button.addActionListener(new ActionListener() {
new JLable("xxx");
图标ICON
图片icon
package com.lei.lesson3;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class ImageIconDemo extends JFrame {
//获取图片地址
public ImageIconDemo() {
JLabel label = new JLabel("ImageIcon");
URL url = ImageIconDemo.class.getResource("1.jpg");
ImageIcon imageIcon = new ImageIcon(url);
label.setIcon(imageIcon);
label.setHorizontalAlignment(SwingConstants.CENTER);
Container container = getContentPane();
container.add(label);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100,100,100,100);
}
public static void main(String[] args) {
new ImageIconDemo();
}
}
package com.lei.lesson05;
import javax.swing.*;
import java.awt.*;
public class JPanelDemo extends JFrame {
public JPanelDemo(){
Container container = this.getContentPane();
//后面的参数为间距
container.setLayout(new GridLayout(2, 1, 10, 10));
JPanel jPanel = new JPanel(new GridLayout(3, 1));
JPanel jPanel1 = new JPanel(new GridLayout(1, 2));
JPanel jPanel2= new JPanel(new GridLayout(2, 1));
JPanel jPanel3 = new JPanel(new GridLayout(1, 1));
jPanel.add(new JButton("1"));
jPanel.add(new JButton("1"));
jPanel.add(new JButton("1"));
jPanel1.add(new JButton("2"));
jPanel1.add(new JButton("2"));
jPanel2.add(new JButton("3"));
jPanel2.add(new JButton("3"));
jPanel3.add(new JButton("4"));
container.add(jPanel);
container.add(jPanel1);
container.add(jPanel2);
container.add(jPanel3);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setBounds(100,100,400,500);
}
public static void main(String[] args) {
new JPanelDemo();
}
}
scrollpanel带滚动条的面板
package com.lei.lesson05;
import javax.swing.*;
import java.awt.*;
public class JScrollDemo extends JFrame {
public JScrollDemo(){
Container container = getContentPane();
//文本域
JTextArea jTextArea = new JTextArea(20,50);
jTextArea.setText("欢迎学习GUI");
//scroll面板
JScrollPane jScrollPane = new JScrollPane(jTextArea);
container.add(jScrollPane);
// container.add(jTextArea);
this.setVisible(true);
this.setBounds(100,100,400,500);
}
public static void main(String[] args) {
new JScrollDemo();
}
}
3.5按钮
图片按钮
package com.lei.lesson05;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class JButtonDemo extends JFrame {
public JButtonDemo(){
Container container = getContentPane();
//将图片变成图标
URL url = JButtonDemo.class.getResource("1.jpg");
Icon icon = new ImageIcon(url);
//把图标放在按钮上
JButton jButton = new JButton();
jButton.setIcon(icon);
jButton.setToolTipText("图片按钮");
container.add(jButton);
this.setVisible(true);
this.setBounds(100,100,500,400);
}
public static void main(String[] args) {
new JButtonDemo();
}
}
单选按钮
package com.lei.lesson05;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class JButtonDemo01 extends JFrame {
public JButtonDemo01(){
Container container = getContentPane();
//单选框
JRadioButton jRadioButton1 = new JRadioButton("jRadioButton1");
JRadioButton jRadioButton2 = new JRadioButton("jRadioButton2");
JRadioButton jRadioButton3 = new JRadioButton("jRadioButton3");
//单选框只能选择一个,所以分组,一个组中只能选择一个
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(jRadioButton1);
buttonGroup.add(jRadioButton2);
buttonGroup.add(jRadioButton3);
container.add(jRadioButton1,BorderLayout.CENTER);
container.add(jRadioButton2,BorderLayout.NORTH);
container.add(jRadioButton3,BorderLayout.SOUTH);
this.setVisible(true);
this.setBounds(100,100,500,400);
}
public static void main(String[] args) {
new JButtonDemo01();
}
}
复选按钮
package com.lei.lesson05;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class JButtonDemo02 extends JFrame {
public JButtonDemo02(){
Container container = getContentPane();
//多选框
JCheckBox jCheckBox1 = new JCheckBox("jCheckBox1");
JCheckBox jCheckBox2 = new JCheckBox("jCheckBox2");
JCheckBox jCheckBox3 = new JCheckBox("jCheckBox3");
container.add(jCheckBox1,BorderLayout.CENTER);
container.add(jCheckBox2,BorderLayout.NORTH);
container.add(jCheckBox3,BorderLayout.SOUTH);
this.setVisible(true);
this.setBounds(100,100,500,400);
}
public static void main(String[] args) {
new JButtonDemo02();
}
}
3.6列表
下拉框
package com.lei.lesson06;
import javax.swing.*;
import java.awt.*;
public class ComboboxDemo extends JFrame {
public ComboboxDemo(){
Container container = getContentPane();
JComboBox jComboBox = new JComboBox();
jComboBox.addItem(null);
jComboBox.addItem("正在热映");
jComboBox.addItem("已下架");
jComboBox.addItem("即将上映");
container.add(jComboBox);
this.setVisible(true);
this.setSize(300,400);
}
public static void main(String[] args) {
new ComboboxDemo();
}
}
列表框
package com.lei.lesson06;
import javax.swing.*;
import java.awt.*;
public class ComboBoxDemo01 extends JFrame {
public ComboBoxDemo01(){
Container container = getContentPane();
//生成列表的内容
String[] contents={"1","2","3"};
JList jList = new JList(contents);
container.add(jList);
this.setVisible(true);
this.setSize(300,400);
}
public static void main(String[] args) {
new ComboBoxDemo01();
}
}
应用场景
-
选择地区,或者一些单个选项
-
列表,展示信息,一般是动态扩容
文本框
文本框
package com.lei.lesson06;
import javax.swing.*;
import java.awt.*;
public class TextDemo extends JFrame {
public TextDemo() throws HeadlessException {
Container container = getContentPane();
JTextField jTextField = new JTextField("world");
JTextField jTextField1 = new JTextField("world1",20);
container.add(jTextField,BorderLayout.SOUTH);
container.add(jTextField1,BorderLayout.NORTH);
this.setVisible(true);
this.setSize(400,400);
}
public static void main(String[] args) {
new TextDemo();
}
}
密码框
package com.lei.lesson06;
import javax.swing.*;
import java.awt.*;
public class TextDemo02 extends JFrame {
public TextDemo02() throws HeadlessException {
Container container = getContentPane();
JPasswordField jPasswordField = new JPasswordField();
jPasswordField.setEchoChar('*');
container.add(jPasswordField);
this.setVisible(true);
this.setSize(400,400);
}
public static void main(String[] args) {
new TextDemo02();
}
}
-
文本域
JTextArea

浙公网安备 33010602011771号