GUI编程,核心技术Swing和AWT

本文介绍了GUI编程的核心技术,包括Swing和AWT。讲解了AWT中的组件、容器、布局管理器、事件监听,以及Swing中的窗口、面板、组件等。虽然现代GUI设计已不常用Swing和AWT,但学习它们能帮助理解MVC架构和监听机制。
摘要由CSDN通过智能技术生成

@ GUI编程

1.简介

Gui的核心技术: Swing(做了封装) AWT(更底层的东西)
为什么现在不常用了?
  1. 因为界面不美观
  2. 需要jre环境(消耗内存)
为什么我们要学习?
  • 可以写出自己心中想要的一些小工具
  • 工作时候,也可能需要维护到Swing界面,概率极小
  • 了解MVC架构,了解监听!

2. AWT

#### 	2.1 Awt简介
  • 包含了很多类和接口
  • 元素:窗口(Frame),按钮(Button),文本框(TextField)
  • java.awt.*;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePR3V3jE-1608307810927)(C:\Users\user\Desktop\Java截图\QQ截图20201215165113.png)]

2.2 组件和容器
	##### 		1. Frame窗口


	<img src="C:\Users\user\Desktop\Java截图\QQ截图20201215173228.png" style="zoom:200%;" />
2. Panel面板
  • 解决了关闭窗口事件
public static void main(String[] args) {
    Frame frame = new Frame("我的第一个GUI界面");
    //panel可以看成一个空间,但不能单独存在
    Panel panel = new Panel();
    //设置布局
    frame.setLayout(null);
    frame.setBounds(100,100,500,500);
    frame.setBackground(new Color(25, 74, 251));
    //panel设置坐标,相对于frame
    panel.setBounds(50,50,400,400);
    panel.setBackground(new Color(22, 197, 22));
    frame.add(panel);
    frame.setVisible(true);
    //添加窗口监听事件,检测窗口关闭时退出程序
    //适配器模式 WindowAdapter
    frame.addWindowListener(new WindowAdapter() {
        //窗口点击关闭的时候需要做的事情
        @Override
        public void windowClosing(WindowEvent e) {
            //结束程序
            System.exit(0);
        }
    });
}
3. 布局管理器(LayoutManager)
1. 流式布局(FlowLayout)
public static void main(String[] args) {
    Frame frame= new Frame("我的GUI界面");
    //组件-按钮
    Button button = new Button("button1");
    Button button1 = new Button("button2");
    Button button2 = new Button("button3");
    //设置布局方式为流式布局,默认居中
   // frame.setLayout(new FlowLayout());
   //居左
    //frame.setLayout(new FlowLayout(FlowLayout.LEFT));
    //居右
    frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
    //添加组件
    frame.add(button);
    frame.add(button1);
    frame.add(button2);
    frame.setVisible(true);
    frame.setSize(300,300);

}
2. 表格布局(GridLayout)
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");
    Button button4 = new Button("button4");
    Button button5 = new Button("button5");
    Button button6 = new Button("button6");
    frame.setLayout(new GridLayout(3,2));//3行2列
    frame.add(button1);
    frame.add(button2);
    frame.add(button3);
    frame.add(button4);
    frame.add(button5);
    frame.add(button6);
    frame.pack();//自动控制窗口大小
    frame.setVisible(true);
}
3. 东南西北中 BorderLayout
public static void main(String[] args) {
    Frame frame = new Frame("GUI界面");
    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);
    frame.setSize(200,200);
}
案例:
public static void main(String[] args) {
    //创建窗口
    Frame frame = new Frame();
    //设置窗口布局方式为GridLayout,2行1列
    frame.setLayout(new GridLayout(2,1));
    frame.setVisible(true);
    frame.setSize(500,500);
    frame.setBackground(Color.blue);
    frame.setLocation(300,300);
    //设置4个面板
    Panel panel = new Panel(new BorderLayout());
    Panel panel1 = new Panel(new GridLayout(2,1));
    Panel panel2 = new Panel(new BorderLayout());
    Panel panel3  = new Panel(new GridLayout(2,2));
    //上部分面板添加按钮
    panel.add(new Button("West-1"),BorderLayout.WEST);
    panel.add(new Button("East-2"),BorderLayout.EAST);
    panel1.add(new Button("bt-1"));
    panel1.add(new Button("bt-2"));
    panel.add(panel1,BorderLayout.CENTER);
    //下部分面板添加按钮
    panel2.add(new Button("West-3"),BorderLayout.WEST);
    panel2.add(new Button("East-4"),BorderLayout.EAST);
    for (int i = 0; i < 4; i++) {
        panel3.add(new Button("button"+i));
    }
    panel2.add(panel3, BorderLayout.CENTER);
    //把面板添加到窗口
    frame.add(panel);
    frame.add(panel2);
    //触发关闭窗口事件监听
    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
}

总结:
1. Frame是一个顶级窗口

2. Panel无法单独显示,必须添加到某个容器中
3. 布局管理器
4. 窗口/面板的大小,背景颜色,是否可见,初始位置(定位),关闭窗口事件监听
4. 事件监听(ActionListener)

多个按钮,共享一个事件监听

package com.kuang.lesson2;

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

public class TestActionListener2 {
    public static void main(String[] args) {
        //两个按钮,实现同一个监听
        Frame frame = new Frame();
        Button button = new Button("button1");
        Button button2 = new Button("button2");
        //用于显式的定义触发后返回的命令,如果不显式定义,则走默认值
        //可以多个按钮共享一个事件监听
        button.setActionCommand("执行命令");
        button.addActionListener(new MyMonitor());
        button2.addActionListener(new MyMonitor());
        frame.add(button,BorderLayout.NORTH);
        frame.add(button2,BorderLayout.SOUTH);
        frame.setVisible(true);
        frame.pack();

    }
}
class MyMonitor implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        //getActionCommand()获取按钮的信息
        System.out.println("按钮被点击了,"+e.getActionCommand());
    }
}
5. 文本框 TextField监听
package com.kuang.lesson2;

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

public class MyFrame extends Frame {
    public MyFrame(){
        //文本框事件监听
        TextField field = new TextField();
        //设置替换编码
        field.setEchoChar('*');
        //添加监听器,回车后会触发监听
        field.addActionListener(new MyActionListener());
        add(field);
        pack();
        setVisible(true);
    }
    public static void main(String[] args) {
        new MyFrame();
    }
}
class MyActionListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        TextField field = (TextField)e.getSource();//该方法返回一个Object对象
        //通过监听获取文本框的文本
        System.out.println("文本框,"+field.getText());
        field.setText("");//文本为空
    }
}
6. 简易计算器,组合+内部类回顾复习!

组合大于继承,耦合性更低。组合就是一个类中声明另外一个类

package com.kuang.lesson2;

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 extends Frame {

    private TextField num1,num2,num3;
    public void loadCalculator(){
        //3个变量
        num1 = new TextField();
        num2 = new TextField();
        num3 = new TextField();
        //一个标签
        new Label("+");
        //一个按钮,点击触发求和事件监听
        Button button = new Button("=");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int one = Integer.parseInt(num1.getText());
                int two = Integer.parseInt(num2.getText());
                num3.setText(""+(one+two));
                num1.setText("");
                num2.setText("");
            }
        });
        setLayout(new FlowLayout(FlowLayout.CENTER));
        add(num1);
        add(new Label("+"));
        add(num2);
        add(button);
        add(num3);
        setVisible(true);
        pack();
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
    public static void main(String[] args) {
        new Calculator().loadCalculator();
    }
}
7. 画笔(Graphics g)
package com.kuang.lesson3;

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,600,500);
        setVisible(true);
    }
    public void paint(Graphics g){
        //画笔用完,将它还原为最初的颜色(黑色)
        //g.setColor(Color.RED);
        g.drawOval(100,100,100,100);//画空心圆
        g.fillOval(100,200,200,200);//画实心圆
        g.drawRect(100,400,100,100);//画空心矩形
        g.fillRect(100,500,100,100);//画实心矩形
    }
}
8. 鼠标监听(mouseListener)

目的:想要实现鼠标画画

package com.kuang.lesson2;

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 MyMouse("鼠标画点");
    }
}
class MyMouse extends Frame{
    private ArrayList points;
    public MyMouse(String title){
        super(title);
        points = new ArrayList();
        this.setVisible(true);
        this.setBounds(200,200,600,500);
        this.addMouseListener(new MouseAdapter() {
            //鼠标 按下,点击,弹起
            @Override
            public void mousePressed(MouseEvent e) {
                //鼠标按下
                MyMouse mouse = (MyMouse) e.getSource();
                mouse.addPoint(new Point(e.getX(),e.getY()));
              	mouse.repaint();
            }
        });

    }
    //画笔
    public void paint(Graphics g){
        Iterator iterator = points.iterator();
        while(iterator.hasNext()){
            Point p = (Point) points.iterator().next();
            g.setColor(Color.blue);
            g.fillOval(p.x,p.y,10,10);
        }

    }
    //把点添加到集合中
    public void addPoint(Point p){
        points.add(p);
    }

}
9. 窗口监听(windowListener)
package com.kuang.lesson2;

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

/**
 * 窗口监听
 * 关闭窗口,激活窗口
 */
public class TestWindow {
    public static void main(String[] args) {
        new WindowFrame();
    }
}
class WindowFrame extends Frame{
    public WindowFrame(){
        setVisible(true);
        setBounds(200,200,100,100);
        addWindowListener(new WindowAdapter() {//WindowAdapter是适配器模式
            @Override
            public void windowClosing(WindowEvent e) {
                setVisible(false);//隐藏窗口
                System.out.println("正在关闭");
                System.exit(0);
            }

            //激活窗口
            @Override
            public void windowActivated(WindowEvent e) {
                WindowFrame fr= (WindowFrame) e.getSource();
                fr.setTitle("已激活");
            }

        });
    }
}
10. 键盘监听(keyListener)
package com.kuang.lesson2;

import javax.xml.bind.SchemaOutputResolver;
import java.awt.*;
import java.awt.event.*;

/**
 * 键盘监听
 */
public class TestKey {
    public static void main(String[] args) {
        new KeyFrame();
    }
}
class KeyFrame extends Frame{
    public KeyFrame(){
        setVisible(true);
        setBounds(1,2,200,200);
        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                //监听键盘上的当前某个键,获取键盘码
               int keyCode = e.getKeyCode();
                System.out.println(keyCode);
               if(keyCode == KeyEvent.VK_UP){//使用常量VK_XX
                   System.out.println("UP键按下了");
               }
            }
        });
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

3. Swing

  • javax.swing.*;
  • 必须创建一个容器Container,将JFrame添加进去,通过该容器操作元素
3.1 窗口、面板
package com.kuang.lesson4;

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

/**
 * JFrame
 * 创建窗口
 */
public class MyJFrame extends JFrame {
    public MyJFrame(String title){
        super(title);
    }
    public void init(){
        JLabel label = new JLabel("欢迎来到狂神说java");
        //让文本标签居中显示
        label.setHorizontalAlignment(SwingConstants.CENTER);//居中
        add(label);
        setVisible(true);
        setBounds(1,2,200,200);
        //关闭窗口
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //获得一个容器
        Container container = this.getContentPane();
        container.setBackground(Color.BLUE);
    }
    public static void main(String[] args) {
        //创建了一个窗口
        new MyJFrame("我的第一个JFrame窗口").init();
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajGKPjWO-1608307810957)(C:\Users\user\Desktop\Java截图\QQ截图20201218142408.png)]

3.2 弹窗(Dialog)
package com.kuang.lesson4;

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

/**
 * 弹窗
 * 在当前窗口中点击按钮,弹出一个新窗口
 */
public class MyDialogDemo extends JFrame {
    public MyDialogDemo(){
        setVisible(true);
        setSize(700,500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JButton jButton = new JButton("弹窗");
        jButton.setBounds(50,30,200,100);
        //获得一个容器
        Container container = this.getContentPane();
        //绝对布局
        container.setLayout(null);
        container.add(jButton);
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //弹窗
                new MyDialog();
            }
        });
    }
    public static void main(String[] args) {
        new MyDialogDemo();
    }
}
class MyDialog extends JDialog{
    public MyDialog(){
        setVisible(true);
        setSize(300,300);
        JLabel jLabel = new JLabel("我的标签");
        jLabel.setSize(100,50);
        //获得一个容器
        Container container = this.getContentPane();
        container.setLayout(null);
        container.add(jLabel);
        container.setBackground(Color.yellow);
    }
}
3.3 标签 JLabel
1. new JLabel(" ");

图标 Icon

  • 图片图标 ImageIcon
package com.kuang.lesson4;

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

/**
 * 图片图标 ImageIcon
 * 把图标添加到标签上
 */
public class MyImageIcon extends JFrame {
    public MyImageIcon(){
        setVisible(true);
        setBounds(0,0,500,500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //获取当前类下图片的地址
        URL url= MyImageIcon.class.getResource("tx.png");
        ImageIcon icon = new ImageIcon(url);
        JLabel jLabel = new JLabel("ImageIcon");
        jLabel.setIcon(icon);
        jLabel.setHorizontalAlignment(SwingConstants.CENTER);
        //获得一个容器
        Container container = this.getContentPane();
        container.add(jLabel);
    }
    public static void main(String[] args) {
        new MyImageIcon();
    }
}
3.4 面板JPanel
package com.kuang.lesson4;

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

/**
 * 面板 JPanel
 * 添加按钮到面板
 */
public class JPanelDemo extends JFrame {
    public JPanelDemo(){
        setVisible(true);
        setSize(500,500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container container = this.getContentPane();
        container.setLayout(new GridLayout(2,1,10,10));//最后两个参数是间距
        JPanel jPanel1 = new JPanel(new GridLayout(1,3));
        JPanel jPanel2 = new JPanel(new GridLayout(1,2));
        JPanel jPanel3 = new JPanel(new GridLayout(2,3));
        JPanel jPanel4 = new JPanel(new GridLayout(1,1));
        jPanel1.add(new JButton("jb1"));
        jPanel1.add(new JButton("jb1"));
        jPanel1.add(new JButton("jb1"));
        jPanel2.add(new JButton("jb2"));
        jPanel2.add(new JButton("jb2"));
        jPanel3.add(new JButton("jb3"));
        jPanel3.add(new JButton("jb3"));
        jPanel3.add(new JButton("jb3"));
        jPanel3.add(new JButton("jb3"));
        jPanel3.add(new JButton("jb3"));
        jPanel3.add(new JButton("jb3"));
        jPanel4.add(new JButton("jb4"));
        container.add(jPanel1);
        container.add(jPanel2);
        container.add(jPanel3);
        container.add(jPanel4);
    }
    public static void main(String[] args) {
        new JPanelDemo();
    }
}
3.4.1 滚动面板 JScrollPane ,文本域 JTextArea
package com.kuang.lesson4;

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

/**
 * JScrollPane 滚动面板,只有在超过指定范围之后才会显示滚动条
 */
public class JScrollPaneDemo extends JFrame {
    public JScrollPaneDemo(){
        setVisible(true);
        setBounds(50,50,300,350);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //文本域
        JTextArea jTextArea = new JTextArea(20,50);
        //设置默认文本
        jTextArea.setText("欢迎来到狂神说java");
        //把文本域添加到滚动面板
        JScrollPane jScrollPane = new JScrollPane(jTextArea);
        Container container = this.getContentPane();
        container.add(jScrollPane);
    }

    public static void main(String[] args) {
        new JScrollPaneDemo();
    }
}
3.5 按钮 JButton
  • 图片按钮

    package com.kuang.lesson4;
    
    import javax.swing.*;
    import java.awt.*;
    import java.net.URL;
    
    /**
     * 图片按钮
     * 把图标添加到按钮上
     */
    public class TestJButton extends JFrame {
        public TestJButton(){
            Container container = this.getContentPane();
            //将一个图片变为图标
            URL url = TestJButton.class.getResource("tx.png");
            //Icon是一个接口
            Icon icon = new ImageIcon(url);//向上造型
            JButton jButton = new JButton(icon);
            container.add(jButton);
            setVisible(true);
            setBounds(100,100,200,300);
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        }
    
        public static void main(String[] args) {
            new TestJButton();
        }
    }
    
  • 单选按钮 JRadioButton

package com.kuang.lesson4;

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

public class TestJRadioButton extends JFrame {
    public TestJRadioButton(){
        Container container = this.getContentPane();
        //3个单选按钮
        JRadioButton jRadioButton1 = new JRadioButton("bt1");
        JRadioButton jRadioButton2 = new JRadioButton("bt2");
        JRadioButton jRadioButton3 = new JRadioButton("bt3");
        //分组,把单选按钮添加到一个ButtonGroup组里,每次只能选择一个按钮
        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(jRadioButton1);
        buttonGroup.add(jRadioButton2);
        buttonGroup.add(jRadioButton3);
        container.add(jRadioButton1,BorderLayout.NORTH);
        container.add(jRadioButton2,BorderLayout.CENTER);
        container.add(jRadioButton3,BorderLayout.SOUTH);
        setVisible(true);
        setBounds(100,100,200,300);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new TestJRadioButton();
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wFv1KRb0-1608307810965)(C:\Users\user\Desktop\Java截图\QQ截图20201218181113.png)]

  • 多选按钮 JCheckBox

    package com.kuang.lesson4;
    
    import javax.swing.*;
    import java.awt.*;
    
    /**
     * 多选框
     */
    public class JCheckBoxDemo extends JFrame {
        public JCheckBoxDemo(){
            Container container = this.getContentPane();
            //多选框
            JCheckBox jCheckBox1 = new JCheckBox("bt1");
            JCheckBox jCheckBox2 = new JCheckBox("bt2");
            JCheckBox jCheckBox3 = new JCheckBox("bt3");
            //设置为流式布局
            container.setLayout(new FlowLayout());
            container.add(jCheckBox1);
            container.add(jCheckBox2);
            container.add(jCheckBox3);
            setVisible(true);
            setBounds(100,100,200,300);
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new JCheckBoxDemo();
        }
    }
    
    
3.6 列表框和下拉框
  • 下拉框 JComboBox
package com.kuang.lesson4;

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

/**
 * 下拉框
 */
public class JComboBoxDemo extends JFrame {
    public JComboBoxDemo(){
        Container container = this.getContentPane();
        JComboBox jComboBox = new JComboBox();
        jComboBox.addItem("正在热映");
        jComboBox.addItem("已下架");
        jComboBox.addItem("即将上映");
        jComboBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JComboBox comboBox = (JComboBox) e.getSource();
                //获取当前选中的一项
                String item = (String)comboBox.getSelectedItem();
                System.out.println(item);
            }
        });
        container.add(jComboBox);
        setVisible(true);
        setSize(300,100);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new JComboBoxDemo();
    }
}

  • 列表框 JList
package com.kuang.lesson4;

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

public class JListDemo extends JFrame {
    public JListDemo(){
        Container container = this.getContentPane();
        //Vector可实现自动增长的对象数组。 java.util.vector提供了向量类(Vector)以实现类似动态数组的功能
        Vector contents = new Vector();
        JList jList = new JList(contents);
        contents.add("篮球");
        contents.add("足球");
        contents.add("排球");
        container.add(jList);
        setVisible(true);
        setSize(300,100);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new JListDemo();
    }
}

  • 应用场景

    1. 下拉框 :选择地区

    2. 列表框 :展示信息,一般是动态扩容的!

3.7 文本框
  • 文本框 JTextField
package com.kuang.lesson4;

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

public class JTextFieldDemo extends JFrame {
    public JTextFieldDemo(){
        Container container = this.getContentPane();
        JTextField jTextField1 = new JTextField("Hello,World!",20);
        JTextField jTextField2 = new JTextField("欢迎来到Java王国!",30);
        container.add(jTextField1,BorderLayout.NORTH);
        container.add(jTextField2,BorderLayout.SOUTH);
        setVisible(true);
        setSize(400,300);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new JTextFieldDemo();
    }

}
  • 密码框 JPasswordField
package com.kuang.lesson4;

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

public class JPasswordFieldDemo extends JFrame {
    public JPasswordFieldDemo(){
        Container container = this.getContentPane();
        //通过面板添加文本框,密码框

        JPasswordField jPasswordField = new JPasswordField("123456");
        //设置替换编码
        jPasswordField.setEchoChar('*');
        container.add(jPasswordField);
        setVisible(true);
        setSize(300,200);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new JPasswordFieldDemo();
    }
}
  • 文本域
package com.kuang.lesson4;

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

/**
 * JScrollPane 滚动面板,只有在超过指定范围之后才会显示
 */
public class JScrollPaneDemo extends JFrame {
    public JScrollPaneDemo(){
        //文本域
        JTextArea jTextArea = new JTextArea(20,50);
        //设置默认文本
        jTextArea.setText("欢迎来到狂神说java");
        //把文本域添加到滚动面板
        JScrollPane jScrollPane = new JScrollPane(jTextArea);
        Container container = this.getContentPane();
        container.add(jScrollPane); setVisible(true);
        setBounds(50,50,300,350);
        //关闭窗口事件监听
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new JScrollPaneDemo();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值