GUI - Swing

1. 窗口、面板

import javax.swing.*;
import java.awt.*;

public class JFrameDemo extends  JFrame{
    // init(); 初始化
    public void init(){
        // 顶级窗口
        JFrame jFrame = new JFrame("这是一个JFrame窗口");
        jFrame.setVisible(true);
        jFrame.setBounds(100,100,200,200);

        // 设置文字 JLabel
        JLabel jLabel = new JLabel("Hello, World!");
        // 让文本标签居中
        jLabel.setHorizontalAlignment(SwingConstants.CENTER);

        jFrame.add(jLabel);


        // 容器实例化
        Container contentPane = jFrame.getContentPane();
        contentPane.setBackground(Color.cyan);

        // 关闭事件
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        // 建立一个窗口
        new JFrameDemo().init();
    }
}

2. 弹窗

JDialog,用来被弹出,默认就有关闭事件!

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.setBounds(300,300,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);

        // 点击按钮的时候,弹出一个弹窗
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                // 弹窗
                new MyDialog();
            }
        });
        container.add(button);
    }

    public static void main(String[] args) {
        new DialogDemo();
    }
}

// 弹窗的窗口
class MyDialog extends JDialog{
    public MyDialog(){
        this.setVisible(true);
        this.setBounds(100,100,500,500);

        Container container = this.getContentPane();
        container.setLayout(null);

        JLabel label = new JLabel("Hello, World!");
        label.setBounds(20,20,200,200);
        container.add(label);
    }
}

3. 标签

import javax.swing.*;
import java.awt.*;

// 图标,需要实现类,继承Frame
public class IconDemo extends JFrame implements Icon {

    private int width;
    private int height;

    public IconDemo(){} // 无参构造

    public IconDemo(int width, int height){
        this.width = width;
        this.height = height;
    }

    public void init(){
        IconDemo iconDemo = new IconDemo(15, 15);
        // 图标放在标签上,也可以放在按钮上!
        JLabel label = new JLabel("icon", iconDemo, SwingConstants.CENTER);

        Container container = getContentPane();
        container.add(label);

        this.setVisible(true);
        this.setBounds(100,100,400,400);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new IconDemo().init();
    }

    @Override
    public void paintIcon(Component component, Graphics graphics, int i, int i1) {
        graphics.fillOval(i,i1,width,height);
    }

    @Override
    public int getIconWidth() {
        return this.width;
    }

    @Override
    public int getIconHeight() {
        return this.height;
    }
}

4. 面板

5. 按钮

  • 图片按钮
import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class JButtonDemo01 extends JFrame {

    public JButtonDemo01(){
        Container container = this.getContentPane();
        // 将一个图片变成一个图标
        URL resource = JButtonDemo01.class.getResource("tx.png");
        Icon icon = new ImageIcon(resource);

        // 把这个图标放在按钮上
        JButton button = new JButton();
        button.setIcon(icon);
        button.setToolTipText("图片按钮");

        container.add(button);
        this.setBounds(100,100,500,300);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }
    public static void main(String[] args) {
        new JButtonDemo01();
    }
}
  • 单选框
import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class JButtonDemo02 extends JFrame {

    public JButtonDemo02(){
        Container container = this.getContentPane();
        // 将一个图片变成一个图标
        URL resource = JButtonDemo01.class.getResource("tx.png");
        Icon icon = new ImageIcon(resource);

        // 单选框
        JRadioButton radioButton1 = new JRadioButton("JRadioButton01");
        JRadioButton radioButton2 = new JRadioButton("JRadioButton01");
        JRadioButton radioButton3 = new JRadioButton("JRadioButton01");

        // 由于单选框只能选择一个,需要分组,一个组中只能选择一个
        ButtonGroup group = new ButtonGroup();
        group.add(radioButton1);
        group.add(radioButton2);
        group.add(radioButton3);

        container.add(radioButton1,BorderLayout.NORTH);
        container.add(radioButton2,BorderLayout.CENTER);
        container.add(radioButton3,BorderLayout.SOUTH);

        this.setBounds(100,100,500,300);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }
    public static void main(String[] args) {
        new JButtonDemo02();
    }
}
  • 多选按钮
import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class JButtonDemo03 extends JFrame{
    public JButtonDemo03(){
        Container container = this.getContentPane();
        // 将一个图片变成一个图标
        URL resource = JButtonDemo01.class.getResource("tx.png");
        Icon icon = new ImageIcon(resource);

        // 多选框
        JCheckBox checkBox1 = new JCheckBox("JRadioButton01");
        JCheckBox checkBox2 = new JCheckBox("JRadioButton01");
        JCheckBox checkBox3 = new JCheckBox("JRadioButton01");

        container.add(checkBox1,BorderLayout.NORTH);
        container.add(checkBox2,BorderLayout.CENTER);
        container.add(checkBox3,BorderLayout.SOUTH);

        this.setBounds(100,100,500,300);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }
    public static void main(String[] args) {
        new JButtonDemo03();
    }
}

6. 列表

  • 下拉框
import javax.swing.*;
import java.awt.*;

public class TestComboBoxDemo01 extends JFrame {

    public TestComboBoxDemo01(){
        Container container = this.getContentPane();

        JComboBox status = new JComboBox();

        status.addItem(null);
        status.addItem("正在上映");
        status.addItem("已下架");
        status.addItem("即将上映");

        container.add(status);


        this.setBounds(100,100,500,500);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new TestComboBoxDemo01();
    }
}
  • 列表框
import javax.swing.*;
import java.awt.*;
import java.util.Vector;

public class TestComboBoxDemo02 extends JFrame {

    public TestComboBoxDemo02(){
        Container container = this.getContentPane();

        // 生成列表的内容
        // String[] contents = {"1", "2", "3"};
        Vector vector = new Vector();

        // 列表中需要放入内容
        JList jList = new JList(vector);

        vector.add("张三");
        vector.add("李四");
        vector.add("王五");



        container.add(jList);

        this.setBounds(100,100,500,500);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new TestComboBoxDemo02();
    }
}

7. 文本框

import javax.swing.*;
import java.awt.*;

public class TestTextDemo01 extends JFrame {

    public TestTextDemo01(){
        Container container = this.getContentPane();

        // 文本框:
//        JTextField textField1 = new JTextField("Hello");
//        JTextField textField2 = new JTextField("World",20);
//        container.add(textField1,BorderLayout.NORTH);
//        container.add(textField2,BorderLayout.SOUTH);

        // 密码框
//        JPasswordField passwordField = new JPasswordField();
//        passwordField.setEchoChar('*');
//        container.add(passwordField);

        // 文本域
        JTextArea textArea = new JTextArea(20,50);
        textArea.setText("欢迎来到Rainy小屋");
        JScrollPane scrollPane = new JScrollPane(textArea);
        container.add(scrollPane);


        this.setBounds(100,100,500,500);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new TestTextDemo01();
    }
}
posted @ 2022-05-18 22:36  zedy-wj  阅读(27)  评论(0)    收藏  举报