GUI基础02

Swing

1、JFrame:中文Lable乱码

package com.lesson04;

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

public class JFrameDemo01 {
    //init 初始化 initialize
    public void init() {
        JFrame jFrame = new JFrame();
        jFrame.setBounds(200,200,400,400);
        jFrame.setBackground(Color.YELLOW);
        jFrame.setVisible(true);

        Label label = new Label("小刘学Java");

        jFrame.add(label);

        //关闭事件
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

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

1.1、JFrame: 中文Lable不乱码

package com.lesson04;

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

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

class MyJFrame extends JFrame {
    public void init() {
        this.setBounds(200,200,600,800);
        this.setVisible(true);

        JLabel jLabel = new JLabel("小刘学Java");
        this.add(jLabel);

        jLabel.setHorizontalAlignment(0);

        Container container = this.getContentPane();
        container.setBackground(Color.YELLOW);
    }
}

2、 JDialog弹窗

package com.lesson04;

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

//主窗口
public class JDialogDemo extends JFrame {

    public JDialogDemo() {
        this.setBounds(100,100,400,400);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        //JFrame放东西需要容器
        Container container = this.getContentPane();
        //绝对布局
        container.setLayout(null);

        //按钮
        JButton jButton = new JButton("点击弹出一个对话框");
        jButton.setBounds(30,30,200,30);

        //按钮事件监听
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) { //监听器
                new MyJDialogDemo();
            }
        });
        container.add(jButton);
    }

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

class MyJDialogDemo extends JDialog {
    public MyJDialogDemo() {
        this.setBounds(100,100,200,200);
        this.setVisible(true);

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

        container.add(new Label("小刘学Java"));
    }
}

3、 标签

1. label

new JLabel("XXX");

2. 图标ICON

package com.L.lesson04;

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(20,20);
        //图标可以放在标签上,也可以放在按钮上
        JLabel jLabel = new JLabel("iconText", iconDemo, SwingConstants.CENTER);

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

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

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

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

3. 图片Icon

package com.L.lesson04;

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

public class ImageIconDemo extends JFrame {
    public ImageIconDemo(){
        //获取图片的地址
        JLabel jLabel = new JLabel("ImageIcon");
        URL url = ImageIconDemo.class.getResource("tp01.jpg");

        ImageIcon imageIcon = new ImageIcon(url); //命名不要冲突了
        jLabel.setIcon(imageIcon);
        jLabel.setHorizontalAlignment(SwingConstants.CENTER);

        Container container = getContentPane();
        container.add(jLabel);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setBounds(100,100,200,200);
    }

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

4、面板

1. 普通面板

package com.L.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 jPanel01 = new JPanel(new GridLayout(1, 3));
        JPanel jPanel02 = new JPanel(new GridLayout(1, 2));
        JPanel jPanel03 = new JPanel(new GridLayout(2, 1));
        JPanel jPanel04 = new JPanel(new GridLayout(3, 1));

        jPanel01.add(new JButton("1"));
        jPanel01.add(new JButton("1"));
        jPanel01.add(new JButton("1"));
        jPanel02.add(new JButton("2"));
        jPanel02.add(new JButton("2"));
        jPanel03.add(new JButton("3"));
        jPanel03.add(new JButton("3"));
        jPanel04.add(new JButton("4"));
        jPanel04.add(new JButton("4"));
        jPanel04.add(new JButton("4"));

        container.add(jPanel01);
        container.add(jPanel02);
        container.add(jPanel03);
        container.add(jPanel04);

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

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

2. JScrollPanel

package com.L.lesson05;

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

public class JScrollDemo extends JFrame {

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

        //文本域
        JTextArea jTextArea = new JTextArea(20,50);
        jTextArea.setText("小刘学Java");

        //Scroll面板
        JScrollPane jScrollPane = new JScrollPane(jTextArea);
        container.add(jScrollPane);

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

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

5、按钮

1. 图片按钮

package com.L.lesson05;

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("xx.jpg");
        ImageIcon imageIcon = new ImageIcon(resource);

        //把这个图标放在按钮上
        JButton jButton = new JButton();
        jButton.setIcon(imageIcon);
        jButton.setText("联想宇航员");
        jButton.setToolTipText("这是一个图片按钮");

        //add
        container.add(jButton);

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

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

1. 单选按钮

package com.L.lesson05;

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("xx.jpg");
        ImageIcon imageIcon = new ImageIcon(resource);

        //单选框
        JRadioButton radioButton01 = new JRadioButton("radioButton01");
        JRadioButton radioButton02 = new JRadioButton("radioButton02");
        JRadioButton radioButton03 = new JRadioButton("radioButton03");

        //由于单选框只能选择一个,所以要分组,一个组中只能选择一个
        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(radioButton01);
        buttonGroup.add(radioButton02);
        buttonGroup.add(radioButton03);

        container.add(radioButton01,BorderLayout.NORTH);
        container.add(radioButton02,BorderLayout.CENTER);
        container.add(radioButton03,BorderLayout.SOUTH);

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

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

}
  • 2. 复选按钮

package com.L.lesson05;

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("xx.jpg");
        ImageIcon imageIcon = new ImageIcon(resource);

        //多选框
        JCheckBox checkBox01 = new JCheckBox("checkBox-01");
        JCheckBox checkBox02 = new JCheckBox("checkBox-02");
        JCheckBox checkBox03 = new JCheckBox("checkBox-03");

        container.add(checkBox01,BorderLayout.SOUTH);
        container.add(checkBox02,BorderLayout.CENTER);
        container.add(checkBox03,BorderLayout.NORTH);

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

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

6、列表

1. 下拉框

package com.L.lesson06;

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

public class TextComboBoxDemo01 extends JFrame {

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


        JComboBox status = new JComboBox();
        JPanel panel = new JPanel();

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

        panel.add(status);
        container.add(panel);


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


    }

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

2. 列表框

package com.L.lesson06;

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

public class TextComboBoxDemo02 extends JFrame {

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

        //生成列表的内容
//        String[] contents = {"frank","zhang","Li"};

        Vector contents = new Vector();
        //把输入的内容放入列表中
        JList list = new JList(contents);

        contents.add("zhangSan");
        contents.add("LiSi");
        contents.add("XiaoLiu");

        container.add(list);

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


    }

    public static void main(String[] args) {
        new TextComboBoxDemo02();
    }
}
  • 应用场景
    • 选择地区,或者一些单个选项。一般contents超过两个用下拉框,两个一下用单选框,节省内存
    • 列表,用来展示信息,一般是动态扩容的

7、文本框

  • 1. 本框

    package com.L.lesson06;
    
    import javax.swing.*;
    import java.awt.*;
    
    
    public class TextTextDemo01 extends JFrame{
        public TextTextDemo01(){
            Container container = this.getContentPane();
    
    
            JTextField textField01 = new JTextField("小刘学Java");
            JTextField textField02 = new JTextField("Java很难学",20);
    
            container.add(textField01,BorderLayout.NORTH);
            container.add(textField02,BorderLayout.SOUTH);
    
            this.setBounds(100,100,200,200);
            this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            this.setVisible(true);
    
    
        }
    
        public static void main(String[] args) {
            new TextTextDemo01();
        }
    }
    
  • 2. 密码框

    package com.L.lesson06;
    
    import javax.swing.*;
    import java.awt.*;
    
    public class TextTextDemo02 extends JFrame{
    
        public TextTextDemo02(){
            Container container = this.getContentPane();
    
            JPasswordField passwordField = new JPasswordField();    //******
            passwordField.setEchoChar('*');
    
            container.add(passwordField);
            
            this.setBounds(100,100,200,200);
            this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
    
        public static void main(String[] args) {
            new TextTextDemo02();
        }
    }
    
  • 3. 文本域

package com.L.lesson05;

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

public class JScrollDemo extends JFrame {

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

        //文本域
        JTextArea jTextArea = new JTextArea(20,50);
        jTextArea.setText("小刘学Java");

        //Scroll面板
        JScrollPane jScrollPane = new JScrollPane(jTextArea);
        container.add(jScrollPane);

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

    public static void main(String[] args) {
        new JScrollDemo();
    }
}
posted @   LYQ学Java  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示