欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GUI学习之Swing

程序员文章站 2022-04-11 17:28:02
...

GUI编程之Swing

1.窗口、面板(JFrame)

package day03;

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

public class JFrameTest {
    public static void main(String[] args) {
        //创建一个jFrame
        JFrame jFrame_test = new JFrame("JFrame test");

        //设置窗口大小
        jFrame_test.setBounds(100, 100, 500, 500);

        //new一个label
        Label hello_world = new Label("hello world");
        hello_world.setAlignment(Label.CENTER);

        //把窗口变换为一个容器之后,加上背景颜色
        Container contentPane = jFrame_test.getContentPane();
        contentPane.setBackground(Color.BLUE);

        //将label嵌入到窗口中去
        jFrame_test.add(hello_world);

        //设置可见性
        jFrame_test.setVisible(true);

        //关闭窗口
        jFrame_test.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

2.弹窗(dialog)

package day03;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class JDialogTest {
    public static void main(String[] args) {
        JFrame jf = new JFrame("弹窗测试");

        //设置窗口的大小和位置
        jf.setBounds(100, 100, 500, 500);
        //设置可见性
        jf.setVisible(true);
        Container contentPane1 = jf.getContentPane();

        JButton button = new JButton("点击弹出一个弹框");
        button.setBounds(10, 10, 200, 50);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new MyDialog2();
            }
        });
        contentPane1.add(button);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

class MyDialog2 extends JDialog {
    public MyDialog2() {
        setVisible(true);
        setBounds(100, 100, 200, 200);
        Container contentPane = getContentPane();
        contentPane.setLayout(null);
    }
}

3.标签

package day03;

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


//图标,需要实现类,JFrame继承
public class IconTest extends JFrame implements Icon {
    private int width;
    private int height;

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

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

    public void init() {
        IconTest iconTest = new IconTest(30, 30);
        //图标放在标签上,也可以放在按钮上
        JLabel icon_test = new JLabel("icon_test", iconTest, SwingConstants.CENTER);


        Container contentPane = getContentPane();
        contentPane.add(icon_test);

        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }


    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        g.fillOval(x,y,width,height);
    }

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

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

    public static void main(String[] args) {
        new IconTest().init();
    }
}

4.面板

package day03;

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

public class JPanelTest extends JFrame {
    public JPanelTest() {
        Container contentPane = getContentPane();
        contentPane.setLayout(new GridLayout(1, 1));

        JPanel jPanel = new JPanel(new GridLayout(1, 3));

        jPanel.add(new JButton("1"));
        jPanel.add(new JButton("2"));
        jPanel.add(new JButton("3"));

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

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

JScroll面板

package day03;

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

public class JScrollTest extends JFrame {
    public JScrollTest() {
        //创建一个容器
        Container contentPane = getContentPane();

        //创建一个文本域
        JTextArea jTextArea = new JTextArea(20, 50);
        jTextArea.setText("hello world");

        //创建一个Scroll面板
        JScrollPane jScrollPane = new JScrollPane(jTextArea);
        contentPane.add(jScrollPane);

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

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

5.按钮

  • 单选按钮:只能选其中一个按钮点击
  • 复选按钮:可以点击多个
package day03;

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

public class JButtonTest extends JFrame {
    public JButtonTest() {
        Container contentPane = this.getContentPane();

        //将图片变为图标
        URL resource = JButtonTest.class.getResource("lianbiao.jpg");
        ImageIcon imageIcon = new ImageIcon(resource);

        //把图标放在按钮上
        JButton jButton = new JButton();
        jButton.setIcon(imageIcon);
        jButton.setToolTipText("图片按钮");

        //添加
        contentPane.add(jButton);

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

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

单选按钮代码:

package day03;

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

public class JRadioButtonTest extends JFrame {
    public JRadioButtonTest() {
        Container contentPane = this.getContentPane();

        //单选框
        JRadioButton button1 = new JRadioButton("button1");
        JRadioButton button2 = new JRadioButton("button2");
        JRadioButton button3 = new JRadioButton("button3");

        //将三个按钮放到一个组当中,一个组中只能选一个按钮
        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(button1);
        buttonGroup.add(button2);
        buttonGroup.add(button3);

        contentPane.add(button1,BorderLayout.NORTH);
        contentPane.add(button2,BorderLayout.CENTER);
        contentPane.add(button3,BorderLayout.SOUTH);

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

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

多选框代码

package day03;

import com.sun.jdi.PathSearchingVirtualMachine;

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

public class JCheckBoxTest extends JFrame {
    public JCheckBoxTest() {
        Container contentPane = this.getContentPane();

        JCheckBox button1 = new JCheckBox("button1");
        JCheckBox button2 = new JCheckBox("button2");
        JCheckBox button3 = new JCheckBox("button3");

        contentPane.add(button1, BorderLayout.NORTH);
        contentPane.add(button2, BorderLayout.CENTER);
        contentPane.add(button3, BorderLayout.SOUTH);

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

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

6.列表

下拉框代码:

package day03;

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

public class ComboboxTest extends JFrame {
    public ComboboxTest() {
        Container contentPane = this.getContentPane();

        JComboBox<Object> comboBox = new JComboBox<>();

        comboBox.addItem(null);
        comboBox.addItem("等待发货");
        comboBox.addItem("已发货");
        comboBox.addItem("等待接收");

        contentPane.add(comboBox);

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

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

列表框代码:

package day03;

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

public class JListTest extends JFrame {
    public JListTest() {
        Container contentPane = this.getContentPane();

        //列表内容
        String[] content = {"1", "2", "3"};
        JList<Object> List = new JList<>(content);

        contentPane.add(List);

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

    public static void main(String[] args) {
        new JListTest();
    }
}
  • 选择性去看信息,用下拉框
  • 引来展示信息,用列表框,一般是动态扩容

7.文本框

文本框代码

package day03;

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

public class JTextFieldTest extends JFrame {
    public JTextFieldTest() {
        Container contentPane = this.getContentPane();

        JTextField hello = new JTextField("hello",10);
        JTextField world = new JTextField("world", 10);

        contentPane.add(hello, BorderLayout.NORTH);
        contentPane.add(world, BorderLayout.SOUTH);

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

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

密码框代码

package day03;

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

public class JPasswordTest extends JFrame {
    public JPasswordTest() {
        Container contentPane = super.getContentPane();

        JPasswordField jPasswordField = new JPasswordField();

        contentPane.add(jPasswordField);

        super.setDefaultCloseOperation(EXIT_ON_CLOSE);
        super.setBounds(100, 100, 600, 600);
        super.setVisible(true);
    }

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

文本域代码

package day03;

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


public class JScrollTest extends JFrame {
    public JScrollTest() {
        //创建一个容器
        Container contentPane = getContentPane();

        //创建一个文本域
        JTextArea jTextArea = new JTextArea(20, 50);
        jTextArea.setText("hello world");

        //创建一个Scroll面板
        JScrollPane jScrollPane = new JScrollPane(jTextArea);
        contentPane.add(jScrollPane);

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

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

参考b站GUI学习视频

相关标签: GUI swing