GUI编程学习资料
组件
GUI核心技术:AWT、Swing
-
窗口
-
弹窗
-
面板
-
文本框
-
列表框
-
按钮
-
图片
-
监听事件
-
鼠标
-
键盘事件
-
外挂
-
破解工具
AWT
Abstract Window Tool:底层实现
-
包含了很多类和接口! GUI!
-
元素:窗口、按钮、文本框
-
java.awt
-
组件:button、TextArea、Label、Window、Panel、Frame、Dialog、Applet...
组件和容器
Frame
顶级窗口(总窗口)
import java.awt.*; //GUI图形界面创建(总窗口) public class TestFrame { public static void main(String[] args) { //Frame Frame frame = new Frame("JAVA图形界面窗口"); //设置可见性 frame.setVisible(true); //设置窗口大小 frame.setSize(400,300); //设置背景颜色 frame.setBackground(new Color(255, 255, 139)); //设置窗口位置 frame.setLocation(400,400); //设置大小固定 frame.setResizable(false); } }
Panel
面板:panel无法单独显示,必须添加到某个容器中
import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; //Panel 可以看成是一个空间,但是不能单独存在 public class TestPanel { public static void main(String[] args) { Frame frame = new Frame("TestPanel"); Panel panel = new Panel(); //设置布局 frame.setLayout(null); //设置窗口坐标和大小(相对于屏幕) frame.setBounds(400,400,400,300); //设置面板坐标和大小(相对于frame) panel.setBounds(50,50,200,150); //设置窗口背景颜色 frame.setBackground(Color.white); //设置面板背景颜色 panel.setBackground(Color.yellow); //给窗口添加面板 frame.add(panel); //设置窗口可见性 frame.setVisible(true); //监听窗口关闭事件(适配器模式) frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { //结束程序 System.exit(0); } }); } }
Layout
布局管理器:有流式布局、东西南北中布局、表格布局
import java.awt.*; //1.流式布局(从左到右依次排开) public class TestFlowLayout { public static void main(String[] args) { Frame frame = new Frame("TestFlowLayout"); //组件-按钮 Button button1 = new Button("button1"); Button button2 = new Button("button2"); Button button3 = new Button("button3"); //将窗口设置为东西南北中布局 frame.setLayout(new FlowLayout(FlowLayout.RIGHT)); //设置窗口大小 frame.setSize(400,400); //设置窗口位置 frame.setLocation(500,500); //将按钮添加到窗口中 frame.add(button1); frame.add(button2); frame.add(button3); //设置窗口可见性 frame.setVisible(true); } } ====================================================================== import java.awt.*; //2.东西南北中布局 public class TestBorderLayout { public static void main(String[] args) { Frame frame = new Frame("TestBorderLayout"); //按钮 Button button1 = new Button("East"); Button button2 = new Button("West"); Button button3 = new Button("South"); Button button4 = new Button("North"); Button button5 = new Button("Center"); //将按钮添加到窗口中 frame.add(button1, BorderLayout.EAST); frame.add(button2, BorderLayout.WEST); frame.add(button3, BorderLayout.SOUTH); frame.add(button4, BorderLayout.NORTH); frame.add(button5, BorderLayout.CENTER); //设置窗口位置 frame.setLocation(500,500); //设置窗口大小 frame.setSize(500,500); //设置窗口可见性 frame.setVisible(true); } } ====================================================================== import java.awt.*; //表格布局 public class TestGridLayout { public static void main(String[] args) { Frame frame = new Frame("TestGridLayout"); //按钮 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(2,3)); //将按钮添加到窗口中(自动填充) frame.add(button1); frame.add(button2); frame.add(button3); frame.add(button4); frame.add(button5); frame.add(button6); //自动布局(Java函数) //frame.pack(); //设置窗口位置和大小 frame.setBounds(500,500,500,500); //设置窗口可见性 frame.setVisible(true); } }
布局可以交叉使用
import java.awt.*; //绘制布局: //上部:左右各一个button,中间两个呈上下结构的button //下部:左右各一个button,中间四个呈两行两列的button public class LayoutDemo { public static void main(String[] args) { //总frame Frame frame = new Frame("LayoutDemo"); frame.setSize(500,500);//设置窗口大小 frame.setLocation(500,500);//设置窗口位置 frame.setBackground(Color.YELLOW);//设置窗口颜色 frame.setVisible(true);//设置窗口可见性 frame.setLayout(new GridLayout(2,1));//设置两行一列的表格布局 //4个面板 Panel panel1 = new Panel(new BorderLayout()); Panel panel2 = new Panel(new GridLayout(2,1)); Panel panel3 = new Panel(new BorderLayout()); Panel panel4 = new Panel(new GridLayout(2,1)); //10个button 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"); Button button7 = new Button("button7"); Button button8 = new Button("button8"); Button button9 = new Button("button9"); Button button10 = new Button("button10"); //上部 panel1.add(button1,BorderLayout.WEST); panel2.add(button2); panel2.add(button3); panel1.add(button4,BorderLayout.EAST); panel1.add(panel2,BorderLayout.CENTER); //下部 panel3.add(button5,BorderLayout.WEST); panel4.add(button6); panel4.add(button7); panel4.add(button8); panel4.add(button9); panel3.add(button10,BorderLayout.EAST); panel3.add(panel4,BorderLayout.CENTER); //将面板放入窗口中 frame.add(panel1); frame.add(panel3); } }
Listener
监听事件:按下按钮,触发一些事件
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 TestListener { public static void main(String[] args) { //主窗口 Frame frame = new Frame("TestListener"); frame.setBounds(500,500,500,500); frame.setVisible(true); //按钮 Button button = new Button("button"); //给按钮添加监听事件 MyActionListener listener = new MyActionListener(); button.addActionListener(listener); //将按钮添加到主窗口中 frame.add(button,BorderLayout.CENTER); //窗体关闭 windowClose(frame); } //关闭窗体事件 private static void windowClose(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("您点击了button"); } }
同一个事件也可以被多个按钮触发
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //同一个事件被多个按钮触发(实现监听事件通用) public class TestMonitor { public static void main(String[] args) { //主窗口 Frame frame = new Frame("TestMonitor"); frame.setBounds(500,500,500,500); frame.setVisible(true); //按钮 Button button1 = new Button("start"); Button button2 = new Button("end"); //给按钮添加监听事件 MyMonitor monitor = new MyMonitor(); button1.addActionListener(monitor); button2.addActionListener(monitor); //将按钮添加到窗口中 frame.add(button1,BorderLayout.NORTH); frame.add(button2,BorderLayout.SOUTH); } } //监听事件 class MyMonitor implements ActionListener { @Override public void actionPerformed(ActionEvent e) { if("start".equals(e.getActionCommand())){ System.out.println("点击了:start"); }else { System.out.println("点击了:end"); } } }
输入框监听事件
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //输入框监听事件 public class TestText { public static void main(String[] args) { new MyFrame1(); } } //主窗口 class MyFrame1 extends Frame{ public MyFrame1(){ //文本框 TextField textField = new TextField(); add(textField); //监听文本框输入的文字 MyMonitor1 monitor = new MyMonitor1(); textField.addActionListener(monitor); //设置替换编码(例如密码之类) textField.setEchoChar('*'); setBounds(500,500,500,500);//设置窗口大小和位置 setVisible(true);//设置窗口可见性 } } //输入框监听事件 class MyMonitor1 implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { TextField textField = (TextField) e.getSource();//获得资源 System.out.println(textField.getText());//获得文本框的文本 textField.setText("");//清空文本框 } }
简易计算器
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.TextEvent; //主方法 public class TestCal { public static void main(String[] args) { Calculator calculator = new Calculator(); } } //计算器类 class Calculator extends Frame { public Calculator(){ //三个文本框 TextField text1 = new TextField(10);//字符数 TextField text2 = new TextField(10);//字符数 TextField text3 = new TextField(20);//字符数 //一个按钮,给按钮添加监听事件 Button button = new Button("="); CalculatorMonitor monitor = new CalculatorMonitor(text1,text2,text3); button.addActionListener(monitor); //一个标签 Label label = new Label("+"); //布局 setLayout(new FlowLayout()); //将组件放入主窗口中: add(text1); add(label); add(text2); add(button); add(text3); setBounds(500,500,500,500);//设置窗口位置和大小 setVisible(true);//设置窗口可见性 } } //监听器类 class CalculatorMonitor implements ActionListener{ //获取三个变量 private TextField text1,text2,text3; //构造器 public CalculatorMonitor(TextField text1, TextField text2, TextField text3){ this.text1 = text1; this.text2 = text2; this.text3 = text3; } //运算方法 @Override public void actionPerformed(ActionEvent e) { //1.获得加数和被加数 int num1 = Integer.parseInt(text1.getText()); int num2 = Integer.parseInt(text2.getText()); //2.将运算后的值放入第三个框 text3.setText(num1+num2+""); //3.清除前两个框 //text1.setText(""); //text2.setText(""); } }
Paint
画笔
import java.awt.*; public class TestPaint { public static void main(String[] args) { MyPaint paint = new MyPaint(); paint.loadFrame(); } } class MyPaint extends Frame{ public void loadFrame(){ setBounds(500,500,500,500);//设置窗口位置和大小 setVisible(true);//设置窗口可见性 } //画笔 @Override public void paint(Graphics g) { //画一个圆 g.setColor(Color.red);//画笔颜色 g.drawOval(50,50,50,50); //画一个实心圆 g.setColor(Color.green);//画笔颜色 g.fillOval(100,50,50,50); //画一个矩形 g.setColor(Color.yellow);//画笔颜色 g.fillRect(150,50,50,50); } }
MouseListener
鼠标监听事件
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) { MouseFrame mouse = new MouseFrame("鼠标监听事件"); } } //鼠标监听 class MouseFrame extends Frame{ ArrayList points;//存储鼠标点击的点 public MouseFrame(String title){ super(title); setBounds(500,500,500,500); setVisible(true); points = new ArrayList(); //添加鼠标监听器 this.addMouseListener(new MouseListener()); } @Override public void paint(Graphics g) { //画画,监听鼠标事件 Iterator iterator = points.iterator(); while (iterator.hasNext()){ Point point = (Point) iterator.next(); g.setColor(Color.red); g.fillOval(point.x,point.y,10,10); } } //添加一个点到窗口中 public void addPaint(Point point){ points.add(point); } //鼠标监听事件(适配器模式) private class MouseListener extends MouseAdapter{ //鼠标按下 @Override public void mousePressed(MouseEvent e) { MouseFrame mouse = (MouseFrame) e.getSource(); //鼠标的点 Point point = new Point(e.getX(), e.getY()); //在窗口中添加点 mouse.addPaint(point); //刷新 mouse.repaint(); } } }
WindowListener
窗口监听事件
import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; //主方法 public class TestWindowListener { public static void main(String[] args) { WindowFrame frame = new WindowFrame(); } } //窗口监听 class WindowFrame extends Frame{ public WindowFrame(){ setBounds(500,500,500,500); setBackground(Color.white); setVisible(true); addWindowListener(new WindowListener()); } //窗口监听事件 class WindowListener extends WindowAdapter{ //窗口打开 @Override public void windowOpened(WindowEvent e) { System.out.println("windowOpened"); } //窗口正在关闭 @Override public void windowClosing(WindowEvent e) { System.out.println("windowClosing"); } //窗口已关闭 @Override public void windowClosed(WindowEvent e) { System.out.println("windowClosed"); } @Override public void windowIconified(WindowEvent e) { System.out.println("windowIconified"); } @Override public void windowDeiconified(WindowEvent e) { System.out.println("windowDeiconified"); } //窗口被激活 @Override public void windowActivated(WindowEvent e) { System.out.println("windowActivated"); } @Override public void windowDeactivated(WindowEvent e) { System.out.println("windowDeactivated"); } //状态改变 @Override public void windowStateChanged(WindowEvent e) { System.out.println("windowStateChanged"); } @Override public void windowGainedFocus(WindowEvent e) { System.out.println("windowGainedFocus"); } @Override public void windowLostFocus(WindowEvent e) { System.out.println("windowLostFocus"); } } }
KeyboardListener
键盘监听事件
import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; //主方法 public class TestKeyboardListener { public static void main(String[] args) { KeyboardFrame frame = new KeyboardFrame(); } } //键盘监听 class KeyboardFrame extends Frame{ public KeyboardFrame(){ setBounds(500,500,500,500); setVisible(true); KeyboardListener listener = new KeyboardListener(); addKeyListener(listener); } //键盘监听事件 class KeyboardListener extends KeyAdapter{ @Override public void keyTyped(KeyEvent e) { System.out.println("keyTyped"); } @Override public void keyPressed(KeyEvent e) { System.out.println("按下了"+e.getKeyCode()); } @Override public void keyReleased(KeyEvent e) { System.out.println("松开了"+e.getKeyCode()); } } }
Swing
主窗口
JFrame:主窗口
import javax.swing.*; import java.awt.*; //主方法 public class JFrameDemo extends JFrame { public static void main(String[] args) { JFrameDemo jFrameDemo = new JFrameDemo("JFrame窗口"); jFrameDemo.init(); } public JFrameDemo(String title){ super(title); } //初始化 public void init(){ //设置窗口位置和大小 setBounds(500,500,500,500); //设置窗口可见性 setVisible(true); //获得一个容器 Container container = this.getContentPane(); //设置容器颜色 container.setBackground(Color.yellow); //JLabel JLabel jLabel = new JLabel("JLabel"); //设置Jlabel居中 jLabel.setHorizontalAlignment(SwingConstants.CENTER); //将JLabel添加到主窗口中 this.add(jLabel); //窗口关闭事件 this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
弹窗
弹窗(JDialog):默认就有窗口关闭事件
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //窗口弹窗 public class DialogDemo extends JFrame { public static void main(String[] args) { DialogDemo dialogDemo = new DialogDemo("窗口弹窗"); } //构造器 public DialogDemo(String title){ super(title); this.setBounds(500,500,500,500); this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//窗口关闭 //Jrame容器(主窗口) Container container = this.getContentPane(); //绝对布局 container.setLayout(null); //按钮 JButton jButton = new JButton("点击即可弹窗"); jButton.setBounds(50,50,300,50); //点击按钮弹出弹窗 DialogListener listener = new DialogListener(); jButton.addActionListener(listener); //将按钮添加到主窗口中 container.add(jButton); } } //弹窗监听事件 class DialogListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { //弹窗 new DiaLogWindow(); } } //弹窗窗口 class DiaLogWindow extends JDialog{ public DiaLogWindow() { this.setBounds(100,100,500,500); this.setVisible(true); //JFrame容器(窗口) Container container = this.getContentPane(); //绝对布局 container.setLayout(null); //Label Label label = new Label("hello,world !!!"); label.setBounds(50,50,300,50); //将Label添加到弹窗窗口中 container.add(label); } }
普通图标
Icon
import javax.swing.*; import java.awt.*; public class IconDemo extends JFrame implements Icon { public static void main(String[] args) { IconDemo iconDemo = new IconDemo(50,50); iconDemo.init(); } private int width; //Icon宽 private int height;//Icon高 //无参构造 public IconDemo(int width, int height){ this.width = width; this.height = height; } //初始化 public void init(){ IconDemo iconDemo = new IconDemo(width,height); //将图标放在一个标签上 JLabel jLabel = new JLabel("Icon", iconDemo, SwingConstants.CENTER); Container container = this.getContentPane(); container.add(jLabel); this.setBounds(500,500,500,500); this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } @Override public void paintIcon(Component c, Graphics g, int x, int y) { g.fillOval(x,y,width,height); } @Override public int getIconWidth() { return this.width; } @Override public int getIconHeight() { return this.height; } }
图片图标
import javax.swing.*; import java.awt.*; import java.net.URL; public class ImageIconDemo extends JFrame { public static void main(String[] args) { ImageIconDemo imageIconDemo = new ImageIconDemo(); } public ImageIconDemo(){ JLabel jLabel = new JLabel("ImageIcon");//创建一个Label用于存放Icon URL url = ImageIconDemo.class.getResource("LOL.png");//获取图片地址 ImageIcon icon = new ImageIcon(url);//创建ImageIcon jLabel.setIcon(icon);//将icon放入Label中 jLabel.setHorizontalAlignment(SwingConstants.CENTER);//设置Label居中 Container container = this.getContentPane();//获取窗口容器 container.add(jLabel);//将Label(Icon)添加到容器中 //设置窗口属性 setBounds(500,500,500,500); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
面板
JPanel
import javax.swing.*; import java.awt.*; public class JPanelDemo extends JFrame { public static void main(String[] args) { JPanelDemo jPanel = new JPanelDemo(); } public JPanelDemo(){ //获取窗口容器 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(2,4)); JPanel panel3 = new JPanel(new GridLayout(3,2)); //给面板添加button panel1.add(new JButton("1.1")); panel1.add(new JButton("1.2")); panel1.add(new JButton("1.3")); panel2.add(new JButton("2.1")); panel2.add(new JButton("2.2")); panel2.add(new JButton("2.3")); panel2.add(new JButton("2.4")); panel3.add(new JButton("3.1")); panel3.add(new JButton("3.2")); //把面板放入容器中 container.add(panel1); container.add(panel2); container.add(panel3); //设置窗口属性 setBounds(500,500,500,500); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
滚动条面板
JScroll
import javax.swing.*; import java.awt.*; public class JScrollDemo extends JFrame { public static void main(String[] args) { JScrollDemo demo = new JScrollDemo(); } public JScrollDemo(){ //获取窗口容器 Container container = this.getContentPane(); //文本域 JTextArea jTextArea = new JTextArea(10,50); jTextArea.setText("君王死社稷,天子守国门"); //JScroll面板 JScrollPane jScrollPane = new JScrollPane(jTextArea); //将面板放入容器中 container.add(jScrollPane); //设置窗口属性 setBounds(500,500,500,500); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
图片按钮
JButton
import javax.swing.*; import java.awt.*; import java.net.URL; public class JButtonDemo extends JFrame { public static void main(String[] args) { JButtonDemo demo = new JButtonDemo(); } public JButtonDemo(){ //获取容器 Container container = this.getContentPane(); //将一个图片变为图标 URL url = JButtonDemo.class.getResource("LOL.png"); Icon icon = new ImageIcon(url); //将这个图标放到一个button上 JButton button = new JButton(); button.setIcon(icon); button.setToolTipText("图片按钮"); //将按钮添加到容器上 container.add(button); //设置窗口属性 setBounds(500,500,500,500); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
单选框
JRadioButton
import javax.swing.*; import java.awt.*; public class JRadioButtonDemo extends JFrame { public static void main(String[] args) { JRadioButtonDemo demo = new JRadioButtonDemo(); } public JRadioButtonDemo(){ //获取容器 Container container = this.getContentPane(); //创建单选框 JRadioButton button1 = new JRadioButton("button1"); JRadioButton button2 = new JRadioButton("button2"); JRadioButton button3 = new JRadioButton("button3"); //由于单选框只能选择一个,需要分组,一个组中只能选择一个 ButtonGroup group = new ButtonGroup(); group.add(button1); group.add(button2); group.add(button3); //将单选框添加到容器中 container.add(button1,BorderLayout.NORTH); container.add(button2,BorderLayout.CENTER); container.add(button3,BorderLayout.SOUTH); //设置窗口属性 setBounds(500,500,500,500); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
多选框
JCheckBoxButton
import javax.swing.*; import java.awt.*; public class JCheckBoxButtonDemo extends JFrame { public static void main(String[] args) { JCheckBoxButtonDemo demo = new JCheckBoxButtonDemo(); } public JCheckBoxButtonDemo(){ //获取容器 Container container = this.getContentPane(); //多选框 JCheckBox checkBox1 = new JCheckBox("论语"); JCheckBox checkBox2 = new JCheckBox("孟子"); JCheckBox checkBox3 = new JCheckBox("大学"); JCheckBox checkBox4 = new JCheckBox("中庸"); //将多选框添加到容器中 container.add(checkBox1,BorderLayout.WEST); container.add(checkBox2,BorderLayout.CENTER); container.add(checkBox3,BorderLayout.EAST); container.add(checkBox4,BorderLayout.SOUTH); //设置窗口属性 setBounds(500,500,500,500); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
下拉框
Combobox
import javax.swing.*; import java.awt.*; public class ComboboxDemo extends JFrame { public static void main(String[] args) { ComboboxDemo demo = new ComboboxDemo(); } public ComboboxDemo(){ Container container = this.getContentPane(); JComboBox comboBox = new JComboBox(); comboBox.addItem("诗经"); comboBox.addItem("尚书"); comboBox.addItem("礼记"); comboBox.addItem("易经"); comboBox.addItem("乐经"); comboBox.addItem("春秋"); container.add(comboBox); setBounds(500,500,500,500); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
列表框
JList
import javax.swing.*; import java.awt.*; public class JListDemo extends JFrame { public static void main(String[] args) { JListDemo demo = new JListDemo(); } public JListDemo(){ Container container = this.getContentPane(); //列表内容 String[] contents = {"针灸大成","黄帝内经","神农本草经","伤寒杂病论","金匮要论"}; //列表 JList jList = new JList(contents); container.add(jList); this.setBounds(500,500,500,500); this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
文本框
JTextField
import javax.swing.*; import java.awt.*; public class JTextFieldDemo extends JFrame { public static void main(String[] args) { JTextFieldDemo demo = new JTextFieldDemo(); } public JTextFieldDemo(){ Container container = this.getContentPane(); JTextField textField = new JTextField("Hello world !!!"); container.add(textField); this.setBounds(500,500,500,500); this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
密码框
JPasswordField
import javax.swing.*; import java.awt.*; public class JPasswordFieldDemo extends JFrame { public static void main(String[] args) { JPasswordFieldDemo demo = new JPasswordFieldDemo(); } public JPasswordFieldDemo(){ Container container = this.getContentPane(); JPasswordField passwordField = new JPasswordField("7362514"); passwordField.setEchoChar('*'); container.add(passwordField); this.setBounds(500,500,500,500); this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
文本域
参照滚动条面板