首页 > 其他分享 >GUI

GUI

时间:2023-08-12 16:44:24浏览次数:51  
标签:java GUI add frame import new public

GUI编程

1、AWT

1.1 介绍

  1. AWT = Abstract Windows tool:抽象的窗口工具
  2. 包含了很多类和接口
  3. 元素:窗口,按钮,文本框
  4. 核心类:组件(component),容器(container)
    image

1.2 组件和容器

1.2.1 Frame

public class FrameDemo01 {
    public static void main(String[] args) {
        //frame
        Frame frame = new Frame("第一个Frame窗口");
        //设置可见性
        frame.setVisible(true);
        //设置窗口大小
        frame.setSize(400,400);
        //设置背景颜色
        frame.setBackground(new Color(163, 155, 155));
        //弹出的初始位置
        frame.setLocation(200,200);
        //设置窗口不可拉伸
        frame.setResizable(false);
    }
}

封装Frame

class MyFrame extends Frame {
    static int id = 0;//窗口计数器

    //继承了父类可以直接使用父类方法
    public MyFrame(int x,int y,int width,int height,Color color) {
        super("MyFrame+"+(++id));
        setBackground(color);
        setVisible(true);
        setBounds(x,y,width,height);
        setResizable(false);
    }

1.2.2 Panel

  1. 解决了窗口关闭问题
  2. panel不能单独存在
  3. 显示和管理其他组件
package com.quinn.frame;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class PanelDemo01 {
    public static void main(String[] args) {
        Frame frame = new Frame();
        //流布局
        Panel panel = new Panel();
        frame.setLayout(null);

        frame.setBounds(400,400,400,400);
        frame.setBackground(Color.blue);

        panel.setBounds(100,100,200,200);
        panel.setBackground(Color.pink);

        frame.add(panel);
        frame.setVisible(true);

        //监听事件
        //适配器模式
        frame.addWindowListener(new WindowAdapter() {
            //窗口点击关闭的时候结束程序
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

1.3 布局管理器

1.3.1 流式布局

  1. 从上到下,从左到右
package com.quinn.frame;

import java.awt.*;

public class FlowLayoutDemo01 {
    public static void main(String[] args) {
        Frame frame = new Frame();

         Button btn1 = new Button("btn1");
         Button btn2 = new Button("btn2");
         Button btn3 = new Button("btn3");
         Button btn4 = new Button("btn4");

         //设置流式布局并居中显示
         frame.setLayout(new FlowLayout(FlowLayout.CENTER));

         frame.setSize(300,300);


         frame.add(btn1);
         frame.add(btn2);
         frame.add(btn3);
         frame.add(btn4);

         frame.setVisible(true);

    }
}

1.3.2 东西南北中

package com.quinn.frame;

import java.awt.*;

public class BorderLayoutDemo01 {
    public static void main(String[] args) {
        Frame frame = new Frame();
        frame.setSize(300,300);

        Button east = new Button("East");
        Button west = new Button("West");
        Button south = new Button("South");
        Button north = new Button("North");
        Button center = new Button("Center");

        frame.add(east,BorderLayout.EAST);
        frame.add(west,BorderLayout.WEST);
        frame.add(south,BorderLayout.SOUTH);
        frame.add(north,BorderLayout.NORTH);
        frame.add(center,BorderLayout.CENTER);

        frame.setVisible(true);
    }
}

1.3.3 网格布局

package com.quinn.frame;

import java.awt.*;

public class GirdLayoutDemo01 {
    public static void main(String[] args) {
        Frame frame = new Frame();

        Button btn1 = new Button("btn1");
        Button btn2 = new Button("btn2");
        Button btn3 = new Button("btn3");
        Button btn4 = new Button("btn4");
        Button btn5 = new Button("btn5");
        Button btn6 = new Button("btn6");

        //三两列
        frame.setLayout(new GridLayout(3,2));

        frame.add(btn1);
        frame.add(btn2);
        frame.add(btn3);
        frame.add(btn4);
        frame.add(btn5);
        frame.add(btn6);

        //自动布局
        frame.pack();

        frame.setVisible(true);
    }
}

1.4 事件监听

  1. 事件监听:当某个事情发生的时候,怎么样?
package com.quinn.frame.demo02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class ActionDemo01 {
    public static void main(String[] args) {
        //按下按钮
        Frame frame = new Frame();
        Button button = new Button();

        MyActionListener myActionListener = new MyActionListener();
        //点击按钮实现效果
        button.addActionListener(myActionListener);
        
        frameClose(frame);
        
        frame.add(button,BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
    
    //关闭窗口事件
    public static void frameClose(Frame frame){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

//事件监听
class MyActionListener implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("aaa");
    }
}

多个按钮共享一个事件

package com.quinn.frame.demo02;

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

public class ActionDemo02 {
    public static void main(String[] args) {
        //实现:两个按钮,开始停止

        Frame frame = new Frame();
        Button start = new Button("start");
        Button stop = new Button("stop");

        start.setActionCommand("start");
        stop.setActionCommand("stop");
        MyMonitor myMonitor = new MyMonitor();

        start.addActionListener(myMonitor);
        stop.addActionListener(myMonitor);

        frame.add(start,BorderLayout.NORTH);
        frame.add(stop,BorderLayout.SOUTH);

        frame.pack();
        frame.setVisible(true);
    }
}

class MyMonitor implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        //e.getActionCommand():获得按钮信息
        System.out.println("按钮被点击了:"+);

    }
}

1.5 TextFied

package com.quinn.frame.demo02;

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

public class ActionDemo03 {
    public static void main(String[] args) {
        //启动
        new MyFrame();
    }
}

class MyFrame extends Frame{
    public MyFrame() {
        TextField textField = new TextField();
        add(textField);
        //按下回车就会触发输入框的事件
        MyActionListener2 myActionListener = new MyActionListener2();
        //监听文本框输入的内容
        textField.addActionListener(myActionListener);

        //设置替换编码,密码形式
        textField.setEchoChar('*');

        pack();
        setVisible(true);

    }
}
class MyActionListener2 implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
      TextField textField = (TextField) e.getSource();//获得一些资源,返回一个Object对象
        System.out.printf(textField.getText());//获得输入的文本
        textField.setText("");//回车清空
    }
}

1.6 简易计算器

1.6.1 优化前:面向过程

package com.quinn.frame.demo02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Calculator {
    public static void main(String[] args) {
        new MyCalc();
    }
}

class MyCalc extends Frame {


    public MyCalc(){
        //三个文本框
        TextField textField1 = new TextField(10);//最大字符数
        TextField textField2 = new TextField(10);
        TextField textField3 = new TextField(20);

        //一个标签
        Label label = new Label("+");

        //一个按钮
        Button button = new Button("=");
        MyCalcMonitor myMonitor1 = new MyCalcMonitor(textField1,textField2,textField3);
        button.addActionListener(myMonitor1);

        setLayout(new FlowLayout());
        add(textField1);
        add(label);
        add(textField2);
        add(button);
        add(textField3);
        pack();
        setVisible(true);

        frameClose(this);

    }
    public static void frameClose(Frame frame){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }


}
class MyCalcMonitor implements ActionListener{
    private TextField text1,text2,text3;

    public MyCalcMonitor(TextField text1, TextField text2, TextField text3) {
        this.text1 = text1;
        this.text2 = text2;
        this.text3 = text3;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
       int a = Integer.parseInt(text1.getText());
       int b =Integer.parseInt(text2.getText());
       text3.setText(""+(a+b));
        System.out.println(a+"+"+b+"="+text3.getText());
       text1.setText("");
       text2.setText("");
       text3.setText("");

    }
}

1.6.2 优化后:面向对象

package com.quinn.frame.demo02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Calculator {
    public static void main(String[] args) {
        new MyCalc().loadFrame();
    }
}

class MyCalc extends Frame {
    TextField textField1,textField2,textField3;

    public void loadFrame(){
        //三个文本框
        textField1 = new TextField(10);//最大字符数
        textField2 = new TextField(10);
        textField3 = new TextField(20);//一个标签
        Label label = new Label("+");

        //一个按钮
        Button button = new Button("=");

        MyCalcMonitor myMonitor1 = new MyCalcMonitor(this);
        button.addActionListener(myMonitor1);

        setLayout(new FlowLayout());
        add(textField1);
        add(label);
        add(textField2);
        add(button);
        add(textField3);
        pack();
        setVisible(true);
        frameClose(this);
    }



    public static void frameClose(Frame frame){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

class MyCalcMonitor implements ActionListener{
    MyCalc myCalc = null;

    public MyCalcMonitor(MyCalc myCalc) {
        this.myCalc = myCalc;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
       int a = Integer.parseInt(myCalc.textField1.getText());
       int b = Integer.parseInt(myCalc.textField2.getText());
       myCalc.textField3.setText(""+(a+b));
       System.out.println(myCalc.textField1.getText()+"+"+myCalc.textField2.getText()+"="+myCalc.textField3.getText());
       myCalc.textField1.setText("");
       myCalc.textField2.setText("");
    }
}

1.6.3 最佳:内部类

好处是可以畅通无阻的访问外部类的属性和方法

package com.quinn.frame.demo02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Calculator {
    public static void main(String[] args) {
        new MyCalc().loadFrame();
    }
}

class MyCalc extends Frame {
    TextField textField1,textField2,textField3;

    public void loadFrame(){
        //三个文本框
        textField1 = new TextField(10);//最大字符数
        textField2 = new TextField(10);
        textField3 = new TextField(20);//一个标签
        Label label = new Label("+");

        //一个按钮
        Button button = new Button("=");

        MyCalcMonitor myMonitor1 = new MyCalcMonitor();
        button.addActionListener(myMonitor1);

        setLayout(new FlowLayout());
        add(textField1);
        add(label);
        add(textField2);
        add(button);
        add(textField3);
        pack();
        setVisible(true);
        frameClose(this);
    }

    private class MyCalcMonitor implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            int a = Integer.parseInt(textField1.getText());
            int b = Integer.parseInt(textField2.getText());
            textField3.setText(""+(a+b));
            System.out.println(textField1.getText()+"+"+textField2.getText()+"="+textField3.getText());
            textField1.setText("");
            textField2.setText("");
        }
    }


    public static void frameClose(Frame frame){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}


1.7 Paint

package com.quinn.frame.demo02;

import java.awt.*;

public class PaintDemo01 {
    public static void main(String[] args) {
        new MyPoint().loadFrame();
    }
}

class MyPoint extends Frame{
    public void loadFrame(){

        setBounds(200,200,600,500);
        setVisible(true);
    }
    @Override
    public void paint(Graphics g) {
       g.setColor(Color.blue);
       g.drawOval(100,100,100,100);//空心圆
       g.fillOval(300,300,100,100);//实心圆
        //还原画笔
    }
}

1.8 鼠标监听

  1. 实现鼠标画画
package com.quinn.frame.demo03;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

public class MouseDemo01 {
    public static void main(String[] args) {
        new MyFrame("Paint");
    }
}
class MyFrame extends Frame{
    private ArrayList points;
    public MyFrame(String title) {
        super(title);
        setBounds(200,200,400,300);

        //存放鼠标的点
        points = new ArrayList<>();

        this.addMouseListener(new MyMouseListener());
        setVisible(true);
    }

    @Override
    public void paint(Graphics g) {
        //监听鼠标
        Iterator it = points.iterator();
        while (it.hasNext()){
            Point point = (Point) it.next();
            g.setColor(Color.blue);
            g.fillOval(point.x,point.y,10,10);
        }
    }

    //添加一个点到界面上
    public void addPoint(Point point){
       points.add(point);
    }

    private class MyMouseListener extends MouseAdapter {
        //按下不放
        @Override
        public void mousePressed(MouseEvent e) {
            MyFrame myFrame = (MyFrame) e.getSource();
            //点击的时候就会在界面上产生一个点
            myFrame.addPoint(new Point(e.getX(),e.getY()));//鼠标的坐标

            //每次点击鼠标需要重画一遍
            myFrame.repaint();//刷新
        }

    }
}

1.9 窗口监听

package com.quinn.frame.demo03;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class WindowDemo01 {
    public static void main(String[] args) {
        new MyWindowFrame();
    }
}
class MyWindowFrame extends Frame{
    public MyWindowFrame(){
        setBackground(Color.pink);
        setBounds(400,400,300,200);
        setVisible(true);
        addWindowListener(new MyWindowListener());
    }
    
    class MyWindowListener extends WindowAdapter{
        @Override
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    }
}

优化后

package com.quinn.frame.demo03;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class WindowDemo01 {
    public static void main(String[] args) {
        new MyWindowFrame();
    }
}
class MyWindowFrame extends Frame{
    public MyWindowFrame(){
        setBackground(Color.pink);
        setBounds(400,400,300,200);
        setVisible(true);
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    
}

1.10 键盘监听

package com.quinn.frame.demo03;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class KeyDemo01 {
    public static void main(String[] args) {
        new MyFrame1();
    }
}
class MyFrame1 extends Frame {
    public MyFrame1() {
        setBackground(Color.pink);
        setBounds(400,400,300,400);
        setVisible(true);
        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                //键盘按下的键
                int keyCode = e.getKeyCode();
                System.out.println(keyCode);
                if (keyCode == KeyEvent.VK_K){
                    System.out.println("press K ");
                }else {
                    System.out.println("press not K");
                }
            }
        });
    }
}

2、 Swing

2.1 窗口、面板

package com.quinn.swing.demo01;

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

public class JFrameDemo01 {

    public void init(){
        JFrame jFrame = new JFrame("这是一个JFrame窗口");
        jFrame.setVisible(true);
        jFrame.setBounds(400,400,300,200);

        //文本标签居中
        //JLabel label = new JLabel("welcome quinn java world",SwingConstants.CENTER);
        JLabel label = new JLabel("welcome quinn java world");
        label.setHorizontalAlignment(SwingConstants.CENTER);

        jFrame.add(label);
        jFrame.getContentPane().setBackground(Color.pink);



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

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

2.2 弹窗

package com.quinn.swing.demo01;

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

public class DialogDemo01 extends JFrame {
    public DialogDemo01(){
        this.setVisible(true);
        this.setBounds(300,400,300,400);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        //容器
        Container p = this.getContentPane();
        p.setBackground(Color.pink);

        //绝对布局
        p.setLayout(null);

        JButton jButton = new JButton("clicked dialog");
        jButton.setBounds(30,30,200,50);
        p.add(jButton);
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new MyDialog01();
            }
        });

    }

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

//弹窗:默认有关闭事件
class MyDialog01 extends JDialog{
    public MyDialog01() {
        this.setVisible(true);
        this.setBounds(100,100,200,150);

        Container contentPane = this.getContentPane();
        //contentPane.setLayout(null);
        contentPane.add(new Label("Quinn learn java"));
    }
}

2.3 标签

2.3.1 普通标签

JLabel label = new JLabel("welcome quinn java world");

2.3.2 icon标签

package com.quinn.swing.demo01;

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

public class IconDemo02 extends JFrame {
    public IconDemo02(){
        JLabel jLabel = new JLabel("IconDemo02");

        //获取当前IconDemo02类下面同级资源bj.jpg
        URL url = IconDemo02.class.getResource("bd.jpg");

        ImageIcon icon = new ImageIcon(url);
        jLabel.setIcon(icon);
        jLabel.setHorizontalAlignment(SwingConstants.CENTER);

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

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

2.4 面板

package com.quinn.swing.demo02;

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

public class JPanelDemo01 extends JFrame {
    public JPanelDemo01() {
        Container container = this.getContentPane();

        container.setLayout(new GridLayout(2,2,10,10));

        //JPanel jPanel = new JPanel();
        /*jPanel.add(new JButton("1"));
        jPanel.add(new JButton("1"));
        jPanel.add(new JButton("1"));
        jPanel.add(new JButton("1"));*/
        JPanel panel1 = new JPanel(new GridLayout(1, 3));
        JPanel panel2 = new JPanel(new GridLayout(1, 2));
        JPanel panel3 = new JPanel(new GridLayout(2, 1));
        JPanel panel4 = new JPanel(new GridLayout(3, 2));

        panel1.add(new JButton("1"));
        panel1.add(new JButton("1"));
        panel1.add(new JButton("1"));
        panel2.add(new JButton("2"));
        panel2.add(new JButton("2"));
        panel3.add(new JButton("3"));
        panel3.add(new JButton("3"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));

        container.add(panel1);
        container.add(panel2);
        container.add(panel3);
        container.add(panel4);

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

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

2.5 JScroll

package com.quinn.swing.demo02;

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

public class JScrollDemo01 extends JFrame {
    public JScrollDemo01() {
        Container container = this.getContentPane();

        JTextArea textArea = new JTextArea(20,30);
        textArea.setText("welcome learn java");

        JScrollPane scrollPane = new JScrollPane(textArea);
        container.add(scrollPane);

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

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

2.6 按钮

2.6.1 图片按钮

package com.quinn.swing.demo03;

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

public class JButtonDemo01 extends JFrame {

    public JButtonDemo01() {
        Container container = this.getContentPane();
        URL url = JButtonDemo01.class.getResource("bd.jpg");

        ImageIcon icon = new ImageIcon(url);

        JButton button = new JButton();
        button.setIcon(icon);
        button.setToolTipText("图片按钮");

        container.add(button);

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

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

2.6.2 单选按钮

package com.quinn.swing.demo03;

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

public class JButtonDemo02 extends JFrame {

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

        JRadioButton radioButton1 = new JRadioButton("1");
        JRadioButton radioButton2 = new JRadioButton("2");
        JRadioButton radioButton3 = new JRadioButton("3");

        //只能选一个
        ButtonGroup group = new ButtonGroup();
        group.add(radioButton1);
        group.add(radioButton2);
        group.add(radioButton3);

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

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

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

2.6.3 复选按钮

package com.quinn.swing.demo03;

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

public class JButtonDemo03  extends JFrame {

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

        JCheckBox checkBox1 = new JCheckBox("1");
        JCheckBox checkBox2 = new JCheckBox("2");
        JCheckBox checkBox3 = new JCheckBox("3");

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

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

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

2.7 下拉框

package com.quinn.swing.demo04;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class BoxDemo01 extends JFrame {
    public BoxDemo01() {
        Container container = this.getContentPane();


        JComboBox comboBox = new JComboBox();
        comboBox.addItem(null);
        comboBox.addItem("正在上映");
        comboBox.addItem("已下架");
        comboBox.addItem("即将上映");

        comboBox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                System.out.println(e.getItem());
                System.out.println("===============");
            }
        });

        container.add(comboBox);

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

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

2.8 列表框

package com.quinn.swing.demo04;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class BoxDemo02 extends JFrame {
    public BoxDemo02() {
        Container container = this.getContentPane();

        String[] contents = {"1","2","3","4"};

        JList list = new JList(contents);

        container.add(list);

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

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

2.9 文本框

package com.quinn.swing.text;

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

public class TextDemo01 extends JFrame{
    public TextDemo01() {
        Container container = this.getContentPane();

        TextField textField = new TextField("hello");
        TextField textField2 = new TextField("world");

        container.add(textField,BorderLayout.SOUTH);
        container.add(textField2,BorderLayout.NORTH);

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

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

2.10 密码框

package com.quinn.swing.text;

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

public class TextDemo02 extends JFrame{
    public TextDemo02() {
        Container container = this.getContentPane();

        JPasswordField passwordField = new JPasswordField();
        //设置char类型
        passwordField.setEchoChar('*');

        container.add(passwordField);

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

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

2.11 文本域

package com.quinn.swing.text;

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

public class TextDemo03 extends JFrame{
    public TextDemo03() {
        Container container = this.getContentPane();

        JTextArea textArea = new JTextArea(20, 50);
        textArea.setText("welcome learn java");
        JScrollPane scrollPane = new JScrollPane(textArea);
        container.add(scrollPane);

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

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

标签:java,GUI,add,frame,import,new,public
From: https://www.cnblogs.com/zyyq02171220/p/17625008.html

相关文章

  • t113-c-lvgl8-gui例子
    其实tina官方提供了littellvgl的例子,既然找不到原因(可能是8.39的bug),那就看看官方怎么写的。路径主路径是在这里:makefile:显然这makefile是显示在应用层开发的main中:在littlelvgl中有个lvinit是用来初始化内存等等东西的,而在我写的程序中并没有写入写入后仍然不行,看来不是......
  • 《AUDIOGEN: TEXTUALLY GUIDED AUDIO GENERATION》论文学习
    一、INTRODUCTION神经生成模型挑战了我们创造数字内容的方式。从生成高质量图像和语音,到生成长文本,再到最近提出的文本引导的图像生成,这些模型展示了令人印象深刻的结果。这引出一个问题,对于文本引导的生成模型来说,音频的等效物是什么?可以是文本吗?我们用文本来抽象出世界上纷繁复......
  • 《C++ GUI Qt4编程》第2章——创建对话框——深入介绍信号和槽
    槽和普通的C++成员函数几乎是一样的——可以是虚函数;可以被重载;可以是公有的、保护的或者私有的,并且也可以被其他C++成员函数直接调用,它们的参数可以是任意类型。唯一不同的是:槽还可以和信号连接在一起,在这种情况下,每当发射这个信号的时候,就会自动调用这个槽。connect(sender,SI......
  • 基于模板匹配算法的车牌数字字母识别matlab仿真,带GUI界面
    1.算法理论概述       随着交通工具的普及,车辆数量快速增长,车辆管理变得越来越重要。在车辆管理中,车牌号码的自动识别是一个重要的环节。从传统的手工识别,到现在的自动化识别,车牌识别技术已经成为了一个热门的研究领域。其中,数字字母识别是车牌识别的重要组成部分。本文......
  • C#图形用户界面(GUI)编程:Windows窗体应用程序
    简介:欢迎来到C#语言入门指南的第七篇博客!在前几篇博客中,我们已经学习了C#语言的基本概念、面向对象编程、数组和集合、异常处理和调试技巧,以及文件和IO操作、多线程编程。今天,我们将进入GUI编程的世界,学习如何使用C#创建Windows窗体应用程序。让我们开始吧!1.Windows窗体应用程序......
  • Python_GUI(pySide)开发指南(@Like)
    Python_GUI(pySide)开发指南(@Like) 目录一、PythonGUI简介二、PySide6工具安装1.安装VSCode:https://code.visualstudio.com/2.安装Python:https://www.python.org/downloads/3.安装PyCharm:https://www.jetbrains.com/pycharm/4.更新pip: 命令python.exe-mpip......
  • JavaGuide
    Java基础知识点汇总0.Java语言特性简单易学具有面向对象三大特性:继承、封装、多态平台无关性(由JVM虚拟机实现与平台无关)可靠性安全性支持多线程支持网络编程编译与解释并存与C++相比:都是面向对象的语言,都支持继承封装多态Java不提供指针来直接访问内存,更加安全Jav......
  • 《安富莱嵌入式周报》第319期:声音编程器,开源激光雕刻机,自制600W海尔贝克无刷电机,车用
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 更新视频教程:更新第7期ThreadX视频教程:如何实现RTOS高效的任务管理,抢占式调度,时间片调度和零中断延迟(2023-07-31)https://www.armbbs.cn/forum.php?mod=viewthread&tid......
  • python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以
    pythoncodingstyleguide的快速落地实践机器和人各有所长,如codingstyle检查这种可自动化的工作理应交给机器去完成,故发此文帮助你在几分钟内实现codingstyle的自动检查。1.有哪些著名的PythonCodingStyleGuidePEP8https://www.python.org/dev/peps/pep-0008/发明Python语言......
  • x86 Assembly Guide
    x86AssemblyGuideContents: Registers | MemoryandAddressing | Instructions | CallingConventionThisguidedescribesthebasicsof32-bitx86assemblylanguageprogramming,coveringasmallbutusefulsubsetoftheavailableinstructionsandassem......