GUI 编程

GUI 编程

1. 简介

Gui的核心技术:Swing AWT

  1. 了解MVC架构、监听!

2. AWT

2.1 Awt介绍

  1. 包含了很多类和接口!GUI:图形化界面!

  2. 元素:创建,按钮,文本框

  3. awt的包:java.awt

 

 

2.2 组件和容器

Frame

/GUI 的第一个界面
   public class TestFrame {
       public static void main(String[] args) {
           //创建一个 Frame() 实例对象
           //frame:框架 默认 false 不可见
           Frame frame = new Frame("我的第一个GUI图形界面!");

           //设置窗口可见性
           frame.setVisible(true);

           //窗口大小
           frame.setSize(400,400);

           //背景颜色
           frame.setBackground(Color.CYAN);

           //弹出位置
           frame.setLocation(100,100);

           //窗口大小不可变
           frame.setResizable(false);
      }
  }

同时输出多个弹窗

package com.zhang.lesson01;

import java.awt.*;

public class TestFrame02 {
   public static void main(String[] args) {
       myFrame myFrame1 = new myFrame(200,200,200,200, Color.CYAN);
       myFrame myFrame2 = new myFrame(400,200,200,200, Color.CYAN);
       myFrame myFrame3 = new myFrame(200,400,200,200, Color.CYAN);
       myFrame myFrame4 = new myFrame(400,400,200,200, Color.CYAN);
  }
}

//封装类
class myFrame extends Frame {
   static int id = 0;//用于计数

   //使用构造方法,初始化即可加载数据
   public myFrame(int x, int y, int w, int h, Color color) {
       //显示窗口
       setVisible(true);
       //设置窗口大小以及显示位置
       setBounds(x, y, w, h);
       //窗口背景颜色
       setBackground(color);
       //窗口大小不可改变
       setResizable(false);
  }
}

2.3 Panel

解决关闭按钮事件

package com.zhang.lesson01;

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

public class testPanel {
   public static void main(String[] args) {
       //创建frame();对象 frame:框架
       //创建Parme();对象 parme:面板
       Frame frame = new Frame();
       Panel panel = new Panel();

       //设置布局
       frame.setLayout(null);
       //设置窗口大小
       frame.setBounds(200,200,500,500);
       //设置窗口背景
       frame.setBackground(new Color(246, 246, 3));
       //设置面板大小
       panel.setBounds(100,100,300,300);
       //设置面板背景
       panel.setBackground(new Color(12, 12, 248));
       //将面板添加到框架中 Component:成分
       frame.add(panel);
       //设置窗口的可见性
       frame.setVisible(true);

       //设置关闭弹窗的监听事件
       //Listeners:侦听器
       //使用适配器模式,只重写想要的方法
       frame.addWindowListener(new WindowAdapter() {
           //点击窗口的关闭事件
           @Override
           public void windowClosing(WindowEvent e) {
               //实现窗口关闭
               System.exit(0);//强制关闭
          }
      });
  }
}

2.3. 布局管理器

  • 流式布局

package com.zhang.lesson01;

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

public class test01 {
   public static void main(String[] args) {
       Frame frame = new Frame();
       //设置组件
       Button button1 = new Button("button1");
       Button button2 = new Button("button2");
       Button button3 = new Button("button3");
       //设置为流程布局
       //FlowLayout:流程布局
       //默认剧中
       frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
       frame.setSize(300,300);
       //将按钮组件添加到窗口中
       frame.add(button1);
       frame.add(button2);
       frame.add(button3);
       frame.setVisible(true);

       //监听窗口关闭事件;使用适配器
       frame.addWindowListener(new WindowAdapter() {
           //监听到弹窗的关闭事件
           public void windowClosing(WindowEvent e) {
               //执行关闭事件;强制关闭;结束程序
               System.exit(0);
          }
      });
  }
}

  • 东西南北中

package com.zhang.lesson01;

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

public class DemoBorderLayout {
   public static void main(String[] args) {
       Frame frame = new Frame("Border Layout!");

       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");

       //BorderLayout:边框布局
       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.setSize(500,500);
       frame.setVisible(true);

       //事件监听器,弹窗关闭事件
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
}

 

  • 表格布局

package com.zhang.lesson01;

import java.awt.*;

public class DemoGripLayout {
   public static void main(String[] args) {
       Frame frame = new Frame("Border Layout!");

       Button but1 = new Button("but1");
       Button but2 = new Button("but2");
       Button but3 = new Button("but3");
       Button but4 = new Button("but4");
       Button but5 = new Button("but5");
       Button but6 = new Button("but6");

       frame.setLayout(new GridLayout(2,3));

       frame.add(but1);
       frame.add(but2);
       frame.add(but3);
       frame.add(but4);
       frame.add(but5);
       frame.add(but6);

       frame.setSize(200,200);
       frame.setVisible(true);
  }
}

练习:输出如下图形...

image-20210313210425275

实现代码:

package com.zhang.lesson01;

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

public class TestEx {
   public static void main(String[] args) {
       Frame frame = new Frame();
       frame.setSize(400, 300);
       frame.setLocation(400, 400);
       frame.setBackground(Color.GREEN);
       frame.setVisible(true);
       frame.setLayout(new GridLayout(2, 1));

       //面板
       Panel p1 = new Panel(new BorderLayout());
       Panel p2 = new Panel(new GridLayout(2, 1));
       Panel p3 = new Panel(new BorderLayout());
       Panel p4 = new Panel(new GridLayout(2, 2));

       //上半部
       p1.add(new Button("p1-EAST-01"), BorderLayout.EAST);
       p1.add(new Button("p1-WEST-02"), BorderLayout.WEST);
       p2.add(new Button("p2-but-01"));
       p2.add(new Button("p2-but-02"));
       p1.add(p2, BorderLayout.CENTER);

       //下半部
       p3.add(new Button("p3-EAST-01"), BorderLayout.EAST);
       p3.add(new Button("p3-WEST-02"), BorderLayout.WEST);
       for (int i = 0; i < 4; i++) {
           p4.add(new Button("p4-but-" + i));
      }
       p3.add(p4, BorderLayout.CENTER);

       frame.add(p1);
       frame.add(p3);

       //监听窗口关闭事件-适配器
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
}

  1. Frame是一个顶级窗口

  2. Panel无法单独显示,必须添加到某个容器中。

  3. 布局管理器

    1. 流程(流式)

    2. 东西南北中

    3. 表格

  4. 大小,定位,背景颜色,可见性,监听。

 

2.4. 事件监听

package com.zhang.lession02;

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 TestActionEvent {
   public static void main(String[] args) {
       Frame frame = new Frame();

       Button button = new Button();
       MyFrame myFrame = new MyFrame();

       //addActionListener:添加动作监听器
       //调用监听类
       button.addActionListener(myFrame);

       frame.setVisible(true);
       frame.add(button,BorderLayout.CENTER);
       frame.pack();

       //调用关闭窗口方法
       windonClose(frame);
  }

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

//自定义监听类
class MyFrame implements ActionListener {
   @Override
   public void actionPerformed(ActionEvent e) {
       System.out.println("aaa");
  }
}

 

2.5. 输入框事件监听

package com.zhang.lesson02;

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

public class TestText01 {
   public static void main(String[] args) {
       //启动类!
       new myFrame();
  }
}

class myFrame extends Frame{
   //创建构造方法,主类可以调用
   public myFrame(){
       //创建输入框的实例对象
       TextField textField = new TextField();
       add(textField);
       //监听当前输入框中输入的文本信息
       myActionListener myActionListener = new myActionListener();
       //当点击 enter 时,触发事件
       textField.addActionListener(myActionListener);

       setVisible(true);
       pack();
  }
}

class myActionListener implements ActionListener{

   @Override
   public void actionPerformed(ActionEvent e) {
       //监听谁,就转为谁 Object类型可以向下转换
       TextField source = (TextField) e.getSource();//获取资源,会返回一个对象
       String text = source.getText();//从 source 对象中获取文本框中输入的文本
       System.out.println(text);
       source.setText("");
  }
}

2.6 简易计算器

  • 面向过程的写法

package com.zhang.lesson03;

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

public class TestCalculator {
   public static void main(String[] args) {
       new MyFrame();
  }
}

//Frame架构类
class MyFrame extends Frame {
   public MyFrame() {
       //3个文本框
       TextField num1 = new TextField(10);
       TextField num2 = new TextField(10);
       TextField num3 = new TextField(20);
       //标识符与按钮
       Label label = new Label("+");
       Button button = new Button("=");
       //监听按钮事件
       button.addActionListener(new myCalculator(num1, num2, num3));

       //布局
       setLayout(new FlowLayout());
       add(num1);
       add(label);
       add(num2);
       add(button);
       add(num3);
       setVisible(true);
       pack();
  }
}

//计算器类
class myCalculator implements ActionListener {
   private TextField num1, num2, num3;

   public myCalculator(TextField num1, TextField num2, TextField num3) {
       this.num1 = num1;
       this.num2 = num2;
       this.num3 = num3;
  }

   @Override
   public void actionPerformed(ActionEvent e) {
       //获取输入框1,2中的值
       int n1 = Integer.parseInt(num1.getText());
       int n2 = Integer.parseInt(num2.getText());

       //把 num1 与 num2 的 和 放入第三个文本框中
       num3.setText("" + (n1 + n2));

       //清空 n1 与 n2 中的值
       num1.setText("");
       num2.setText("");
  }
}
  • 面向对象的写法

  • 组合类:在一个类中组合另外一个类

package com.zhang.lesson03;

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

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

//计算器类
class Calculator extends Frame {
   //属性
   public TextField num1, num2, num3;

   //方法
   public void loadFrame() {

       num1 = new TextField(10);
       num2 = new TextField(10);
       num3 = new TextField(20);
       Label label = new Label("+");
       Button button = new Button("=");

       //this:指代的是自己,把自己进行传递
       button.addActionListener(new myCalculator(this));

       //布局
       setLayout(new FlowLayout());
       add(num1);
       add(label);
       add(num2);
       add(button);
       add(num3);

       pack();
       setVisible(true);
  }
}

//监听器类
class myCalculator implements ActionListener {
   // 获取计算器对象
   // 组合类:在一个类中组合另外一个类
   Calculator calculator = null;

   public myCalculator(Calculator calculator) {
       this.calculator = calculator;
  }

   @Override
   public void actionPerformed(ActionEvent e) {
       //获取输入框1,2中的值
       //把 num1 与 num2 的 和 放入第三个文本框中
       //清空 n1 与 n2 中的值
       int n1 = Integer.parseInt(calculator.num1.getText());
       int n2 = Integer.parseInt(calculator.num2.getText());

       calculator.num3.setText("" + (n1 + n2));

       calculator.num1.setText("");
       calculator.num2.setText("");
  }
}
  • 内部类

package com.zhang.lesson03;

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

public class TestCalculator {
    public static void main(String[] args) {
        //启动类
        new Calculator().loadFrame();
    }
}

//计算器类
class Calculator extends Frame {
    //定义属性
    public TextField num1, num2, num3;
    private Label label;
    private Button button;

    //方法
    public void loadFrame() {
        num1 = new TextField(10);
        num2 = new TextField(10);
        num3 = new TextField(10);
        label = new Label("+");
        button = new Button("=");

        //监听器
        //this:指代自己,将自己作为参数传入
        button.addActionListener(new myCalculator());

        //布局
        setLayout(new FlowLayout());
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(num3);

        pack();
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        int n1 = Integer.parseInt(num1.getText());
        int n2 = Integer.parseInt(num2.getText());
        num3.setText("" + (n1 + n2));
        num1.setText("");
        num2.setText("");
    }

    //内部类
    private class myCalculator implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            int n1 = Integer.parseInt(num1.getText());
            int n2 = Integer.parseInt(num2.getText());
            num3.setText("" + (n1 + n2));
            num1.setText("");
            num2.setText("");
        }
    }
}

 

2.7 画笔

package com.zhang.lesson04;

import java.awt.*;

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

class myPaint extends Frame {
    public void loadFrame() {
        setBounds(200, 200, 500, 400);
        setVisible(true);
    }

    //画笔
    @Override
    public void paint(Graphics g) {
        //颜色
        g.setColor(Color.blue);
        //draw:图形为空心的
        g.drawOval(50, 50, 100, 100);

        g.setColor(Color.CYAN);
        //fill:图形为实心的
        g.fillOval(200,200,150,150);

        g.setColor(Color.gray);
        g.drawRect(100,150,150,200);
    }
}

 

2.8 鼠标监听

package com.zhang.lesson05;

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

public class TestMouseListener {
   public static void main(String[] args) {
       new MyFrame("画图");
  }
}

//自己的类
class MyFrame extends Frame{
   //画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点

   ArrayList points;//存储鼠标点击时画出的点

   public MyFrame(String titel){
       super(titel);
       setBounds(200,200,400,300);
       //存鼠标点击的点
       points = new ArrayList<>();
       //鼠标监听器,针对当前窗口
       this.addMouseListener(new MyMouseListener());

       setVisible(true);
  }

   //画笔方法
   @Override
   public void paint(Graphics g) {
       //画画,监听鼠标的事件
       Iterator iterator = points.iterator();
       while (iterator.hasNext()){
           Point point = (Point) iterator.next();//返回当前的一个点
           g.setColor(Color.blue);
           g.fillOval(point.x, point.y, 10,10);
      }
  }

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


   //适配器
   private class MyMouseListener extends MouseAdapter{
       //鼠标 按下,弹起,按住不放

       @Override
       //MouseEvent:鼠标事件,谁调用它,它就是谁
       public void mousePressed(MouseEvent e) {
           //是 Frame 调用的,由谁调用,就将对象转为谁
           //获取到窗口
           MyFrame frame = (MyFrame) e.getSource();

           //这里我们点击的时候,就会在界面上产生一个点
           //这个点就是鼠标的点,
           // e:表示当前的鼠标,获取当前鼠标的坐标
           frame.addPaint(new Point(e.getX(), e.getY()));

           //每次点击鼠标都需要从新花一遍
           frame.repaint();
      }
  }
}

2.9 窗口监听

package com.zhang.lesson06;

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

public class TestWindow {
   public static void main(String[] args) {
       new MyWindow();
  }
}

class MyWindow extends Frame{

   public MyWindow(){
       setBackground(Color.CYAN);
       setBounds(200,200,500,500);
       setVisible(true);

       this.addWindowListener(
               //匿名内部类
               new WindowAdapter() {
                   @Override
                   public void windowClosing(WindowEvent e) {
                       System.out.println("windowClosing");
                  }

                   @Override
                   public void windowActivated(WindowEvent e) {
                       System.out.println("WindowEvent");
                  }
              }
      );
  }
}

 

2.10 键盘监听

package com.zhang.lesson07;

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

public class TestKeyListener {
   public static void main(String[] args) {
       new MyKeyListener();
  }
}

class MyKeyListener extends Frame {
   public MyKeyListener() {
       setBackground(Color.GREEN);
       setBounds(1, 1, 200, 200);
       setVisible(true);

       this.addKeyListener(new KeyAdapter() {
           //键盘按下事件
           @Override
           public void keyPressed(KeyEvent e) {
               int keyCode = e.getKeyCode();//code:按键对应的编码
               System.out.println(keyCode);
               if (keyCode == KeyEvent.VK_UP) {
                   System.out.println("上建被按下了!");
              }
          }
      });
  }
}

 

3. Swing

3.1 窗口、面板

package com.zhang.lesson08;

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

public class TestJFrame {
   //init();初始化
   public void init(){
       JFrame jFrame = new JFrame("这是JFrame窗口");
       jFrame.setBounds(100,100,200,200);
//       jFrame.setBackground(Color.GREEN);
       jFrame.setVisible(true);

       //设置文字
       JLabel label = new JLabel("急急急经济结构");
       jFrame.add(label);
       //设置文字对齐方式
       label.setHorizontalAlignment(SwingConstants.CENTER);

       //容器
       Container contentPane = jFrame.getContentPane();
       contentPane.setBackground(Color.yellow);
       //关闭事件
       jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

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

 

3.2 弹窗

  • JDialog:弹窗中默认有关闭事件,所以无需在写关闭事件!

package com.zhang.lesson09;

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

//主窗口
public class TestDialog extends JFrame {
   public TestDialog() {
       //设置窗口大小
       this.setSize(700,500);
       //设置窗口可见性
       this.setVisible(true);
       //设置窗口可关闭性
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

       //创建容器,容器不是使用 new 来创建的,二十从 JFrame()中获取的
       Container container = this.getContentPane();
       //绝对布局,可以自定义窗口中的布局方式
       container.setLayout(null);

       //配置按钮点击事件,当按钮被点击后,弹出窗口
       JButton button = new JButton("点击时弹出窗口");
       JLabel jLabel = new JLabel("222");
       //设置按钮大小及位置
       button.setBounds(30,30,200,50);

       //监听器:点击按钮的时候,弹出弹窗
       button.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               //弹窗事件
               new MyDialogWindow();
          }
      });
       container.add(jLabel);
       container.add(button);
  }

   //主方法
   public static void main(String[] args) {
       new TestDialog();
  }
}


//弹窗类
class MyDialogWindow extends JDialog{
   public MyDialogWindow(){
       //设置窗口可见
       this.setVisible(true);
       //设置弹窗大小
       this.setBounds(100,100,300,300);
       //创建容器
       Container container = this.getContentPane();
       //设置弹窗背景
       container.setBackground(Color.yellow);
       JLabel label = new JLabel("Hello,World");
       //设置字体对齐方式
       label.setHorizontalAlignment(SwingConstants.CENTER);
       container.add(label);
  }
}

3.3 标签

图片:

package com.zhang.lesson10;

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

public class TestImageIcon extends JFrame {
   public TestImageIcon(){
       URL url = TestImageIcon.class.getResource("tp.jpg");
       ImageIcon imageIcon = new ImageIcon(url);
       JLabel label = new JLabel("testImage");
       label.setIcon(imageIcon);
       label.setHorizontalAlignment(SwingConstants.CENTER);

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

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

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

 

3.4 面板

package com.zhang.lesson11;

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

public class JPanelDemo extends JFrame {
   public JPanelDemo(){
       //获取JFrame组件中的容器
       Container container = this.getContentPane();
       //布局,布局组件的第二、三两个数分别是水平间距和垂直间距
       container.setLayout(new GridLayout(2,1,10,10));
       //创建面板
       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"));
       //将面板添加到容器中
       container.add(panel1);
       container.add(panel2);
       container.add(panel3);
       container.add(panel4);


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

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

 

文本域 与 滚动窗格

package com.zhang.lesson11;

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

public class JTestTextDemo extends JFrame {
   public JTestTextDemo(){
       //获取容器
       Container container = this.getContentPane();
       //创建文本域
       JTextArea textArea = new JTextArea();
       textArea.setText("Hello World!!!");
       //创建滚动窗格
       JScrollPane scrollPane = new JScrollPane(textArea);
       container.add(scrollPane);

       this.setVisible(true);
       this.setSize(400,300);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

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

3.5 按钮

图片按钮:把图片加到按钮上

package com.zhang.lesson12;

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("tp.jpg");
       //创建图片图标对象
       Icon imageIcon = new ImageIcon(url);
       //将图标放到按钮上
       JButton button = new JButton("按钮");
       button.setIcon(imageIcon);
       button.setToolTipText("图片按钮");
       //将按钮添加到容器中
       container.add(button);

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

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

单选框

package com.zhang.lesson12;

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

public class JButtonDeom02 extends JFrame {
   public JButtonDeom02(){
       Container container = this.getContentPane();
       URL url = JButtonDeom02.class.getResource("tp.jpg");
       ImageIcon icon = new ImageIcon(url);

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

       //单选框需要分组,不然也会出现可多选的情况
       ButtonGroup group = new ButtonGroup();
       group.add(radioButton1);
       group.add(radioButton2);
       group.add(radioButton3);

       //将单选框添加到容器中
       container.add(radioButton1,BorderLayout.SOUTH);
       container.add(radioButton2,BorderLayout.CENTER);
       container.add(radioButton3,BorderLayout.NORTH);
       
       this.setVisible(true);
       this.setSize(500,500);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

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

多选框

package com.zhang.lesson12;

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

public class JButtonDeom03 extends JFrame {
   public JButtonDeom03(){
       Container container = this.getContentPane();
       URL url = JButtonDeom03.class.getResource("tp.jpg");
       ImageIcon icon = new ImageIcon(url);

       //多选框:多选框不用进行分组
       JCheckBox checkBox1 = new JCheckBox("多选框_01");
       JCheckBox checkBox2 = new JCheckBox("多选框_02");
       JCheckBox checkBox3 = new JCheckBox("多选框_03");

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

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

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

 

3.6 列表

下拉框:

package com.zhang.lesson13;

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

public class TestComboboxDemo01 extends JFrame {

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

       //下拉框
       JComboBox box = new JComboBox();
       box.addItem(null);
       box.addItem("111");
       box.addItem("222");
       box.addItem("333");

       container.add(box);

       this.setVisible(true);
       this.setSize(500,400);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

   public static void main(String[] args) {
       new TestComboboxDemo01();
  }
}
  • 列表框

    package com.zhang.lesson13;

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

    public class TestComboboxDemo02 extends JFrame {

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

           //列表框
           //       String[] array = {"1","2","3"};//静态数组

           Vector vector = new Vector();//动态添加

           //将数据按列表形式进行展示
           JList list = new JList(vector);
           vector.add("张三");
           vector.add("李四");
           vector.add("王五");
           container.add(list);


           this.setVisible(true);
           this.setSize(500, 400);
           this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

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

 

 

3.7 文本框

  • 输入框

  • 文本域

  • 密码框

posted @ 2021-03-17 23:21  初夏_雨露  阅读(87)  评论(0)    收藏  举报