学习笔记21.GUI编程
1、简介
Gui的核心技术:Swing AWT
不流行的原因:
-
因为界面不美观。
-
需要jre 环境!
2、AWT
2.1、Awt介绍
- 包含了很多类和接口!GUI:图形用户界面编程。
- 元素:窗口,按钮,文本框
- java.awt

2.2、组件和容器
1、Frame
package com.cola.lesson1;
import java.awt.*;
public class TestFrame {
public static void main(String[] args) {
Frame frame = new Frame("我的第一个Java图形界面");
//需要设置可见性
frame.setVisible(true);
//设置窗口大小
frame.setSize(400,400);
//设置背景颜色
frame.setBackground(new Color(29, 167, 42));
//弹出的初始位置
frame.setLocation(200,200);
//设置大小固定
frame.setResizable(false);
}
}
问题:发现窗口关闭不掉,停止java程序!
尝试回顾封装:
package com.cola.lesson1;
import java.awt.*;
public class TestFrame2 {
public static void main(String[] args) {
//展示多个窗口 new
MyFrame myFrame1 = new MyFrame(100, 100, 200, 200, Color.blue);
MyFrame myFrame2 = new MyFrame(300, 100, 200, 200, Color.yellow);
MyFrame myFrame3 = new MyFrame(100, 300, 200, 200, Color.red);
MyFrame myFrame4 = new MyFrame(300, 300, 200, 200, Color.magenta);
}
}
class MyFrame extends Frame{
static int id = 0;//可能存在多个窗口,我们需要一个计数器
public MyFrame(int x,int y,int w,int h,Color color){
super("Myframe"+(++id));
setBackground(color);
setBounds(x,y,w,h);
setVisible(true);
}
}

2、面板Panel
解决的关闭事件!
package com.cola.lesson1;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//坐标
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(47, 163, 64));
//panel设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(224, 17, 17));
//frame.add(panel)
frame.add(panel);
frame.setVisible(true);
//监听事件,监听窗口关闭事件 system.exit()
//适配器模式
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
//窗口点击关闭的时候需要做的事情
//结束程序
System.exit(0);
}
});
}
}

2.3、布局管理器
-
流式布局
package com.cola.lesson1; import java.awt.*; public class TestFlowLayout { 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"); //设置为流式布局 //frame.setLayout(new FlowLayout()); //frame.setLayout(new FlowLayout(FlowLayout.LEFT)); frame.setLayout(new FlowLayout(FlowLayout.RIGHT)); frame.setSize(200,200); //把按钮添加上去 frame.add(button1); frame.add(button2); frame.add(button3); frame.setVisible(true); } } -
东西南北中
public class TestBorderLayout { public static void main(String[] args) { Frame frame = new Frame("TestBorderLayout"); 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.setSize(200,200); frame.setVisible(true); } } -
表格布局 Grid
package com.cola.lesson1; import java.awt.*; public class TestGridLayout { public static void main(String[] args) { Frame frame = new Frame("TestGridLayout"); 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();//Java函数! frame.setVisible(true); } }
总结:
- Frame是一个顶级窗口
- Panel无法单独显示,必须添加到某个容器中。
- 布局管理器
- 流式
- 东西南北中
- 表格
- 大小,定位,背景颜色,可见性,监听!
2.4、事件监听
事件监听:当某个事情发生的时候,干什么?
package com.cola.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 TestActionEvent {
public static void main(String[] args) {
//按下按钮,触发事件
Frame frame = new Frame();
Button button = new Button();
//因为addActionListener()需要ActionListener所以构造一个ActionListener
MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);
frame.add(button,BorderLayout.CENTER);
frame.pack();
windowClose(frame); //关闭窗口
frame.setVisible(true);
}
//关闭窗体的事件
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("aaaa");
}
}
多个按钮,共享一个事件
package com.cola.lesson2;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestActionTwo {
public static void main(String[] args) {
//两个按钮,实现同一个监听
// 开始 停止
Frame frame = new Frame("开始-停止");
Button button1 = new Button("start");
Button button2 = new Button("stop");
//可以显示的定义触发会返回的命令,如果不显示定义则走默认的值
//可以多个按钮只写一个监听类
button2.setActionCommand("button2-stop");
MyMonitor myMonitor = new MyMonitor();
button1.addActionListener(myMonitor);
button2.addActionListener(myMonitor);
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
}
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//e.getActionCommand() 获得按钮的信息
System.out.println("按钮被点击了:msg=>"+e.getActionCommand());
}
}
2.5、输入框TextField 监听
package com.cola.lesson2;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class TextText01 { public static void main(String[] args) { //启动! new MyFrame(); }}class MyFrame extends Frame{ public MyFrame(){ TextField textField = new TextField(); add(textField); //监听这个文本框输入的文字 MyActionListener2 myActionListener2 = new MyActionListener2(); //按下enter 就触发事件 textField.addActionListener(myActionListener2); //设置替换编码 textField.setEchoChar('*'); setVisible(true); pack(); }}class MyActionListener2 implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { TextField field = (TextField) e.getSource();//获得一些资源,返回了一个对象 System.out.println(field.getText());//获得输入框中的文本 field.setText(""); }}
2.6、简易计算器,组合+内部类回顾复习
oop原则:组合,大于继承!
目前代码
package com.cola.lesson2;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//简易计算器public class TestCalc { public static void main(String[] args) { new Calculator(); }}//计算器类class Calculator extends Frame{ public Calculator(){ //3 个文本框 TextField num1 = new TextField(10);//字符数 TextField num2 = new TextField(10);//字符数 TextField num3 = new TextField(20);//字符数 //1 个按钮 Button button = new Button("="); button.addActionListener(new MyCalculatorListener(num1,num2,num3)); //1 个标签 Label label = new Label("+"); //布局 setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); }}//监听器类class MyCalculatorListener implements ActionListener{ //获取三个变量 private TextField num1,num2,num3; public MyCalculatorListener(TextField num1,TextField num2,TextField num3) { this.num1 = num1; this.num2 = num2; this.num3 = num3; } @Override public void actionPerformed(ActionEvent e) { //1.获得加数和被加数 int n1 = Integer.parseInt(num1.getText()); int n2 = Integer.parseInt(num2.getText()); //2.将这个值 + 法运算后放到第三个框 num3.setText(""+(n1+n2)); //3.清除前两个框 num1.setText(""); num2.setText(""); }}
完全改造为面向对象
package com.cola.lesson2;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//简易计算器public class TestCalc { public static void main(String[] args) { new Calculator().loadFrame(); }}//计算器类class Calculator extends Frame{ //属性 TextField num1,num2,num3; //方法 public void loadFrame(){ num1 = new TextField(10);//字符数 num2 = new TextField(10);//字符数 num3 = new TextField(20);//字符数 Button button = new Button("="); Label label = new Label("+"); button.addActionListener(new MyCalculatorListener(this)); //布局 setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); }}//监听器类class MyCalculatorListener implements ActionListener{ //获取计算器这个对象,在一个类中组合另外一个类 Calculator calculator = null; public MyCalculatorListener(Calculator calculator) { this.calculator = calculator; } @Override public void actionPerformed(ActionEvent e) { //1.获得加数和被加数 //2.将这个值 + 法运算后放到第三个框 //3.清除前两个框 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.cola.lesson2;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//简易计算器public class TestCalc { public static void main(String[] args) { new Calculator().loadFrame(); }}//计算器类class Calculator extends Frame{ //属性 TextField num1,num2,num3; //方法 public void loadFrame(){ num1 = new TextField(10);//字符数 num2 = new TextField(10);//字符数 num3 = new TextField(20);//字符数 Button button = new Button("="); Label label = new Label("+"); button.addActionListener(new MyCalculatorListener()); //布局 setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); } //监听器类 //内部类最大的好处,就是可以畅通无阻的访问外部类 private class MyCalculatorListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { //1.获得加数和被加数 //2.将这个值 + 法运算后放到第三个框 //3.清除前两个框 int n1 = Integer.parseInt(num1.getText()); int n2 = Integer.parseInt(num2.getText()); num3.setText(""+(n1+n2)); num1.setText(""); num2.setText(""); } }}
2.7、画笔
package com.cola.lesson03;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); } //画笔 @Override public void paint(Graphics g) { //画笔,需要有颜色 g.setColor(Color.red); g.fillOval(100,100,100,100);//实心的园 //养成习惯,画笔用完,把他还原到最初的颜色 g.setColor(Color.BLACK); }}
2.8 鼠标监听
目的:想要实现鼠标画画
package com.cola.lesson03;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 title) { super(title); setBounds(200,200,400,300); //存鼠标点击的点 points = new ArrayList(); //鼠标监听器,针对这个窗口 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 public void mousePressed(MouseEvent e) { MyFrame frame = (MyFrame) e.getSource(); //点击产生点 //这个点就是鼠标的点; frame.addPaint(new Point(e.getX(),e.getY())); //每次点击鼠标都需要重新画一遍 frame.repaint(); } }}
2.9窗口监听
package com.cola.lesson03;import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class TestWindow { public static void main(String[] args) { new WindowFrame(); }}class WindowFrame extends Frame{ public WindowFrame(){ setBackground(Color.blue); setBounds(100,100,200,400); setVisible(true); this.addWindowListener(new WindowAdapter() { //关闭 @Override public void windowClosing(WindowEvent e) { System.out.println("windowClosing"); System.exit(0); } //激活 @Override public void windowActivated(WindowEvent e) { WindowFrame source = (WindowFrame) e.getSource(); source.setTitle("被激活了"); System.out.println("windowActivated"); } }); }}
2.10键盘监听
package com.cola.lesson03;import java.awt.*;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;public class TestKeyListener { public static void main(String[] args) { new KeyFrame(); }}class KeyFrame extends Frame{ public KeyFrame(){ setBounds(1,2,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_UP){ System.out.println("你按下了上键"); } } }); }}
3、swing
3.1、窗口、面板
package com.cola.lesson04;import javax.swing.*;import java.awt.*;public class JFrameDemo { //init();初始化 public void init(){ //顶级窗口 JFrame jf = new JFrame("这是一个JFrame窗口"); jf.setVisible(true); jf.setBounds(100,100,200,200); jf.setBackground(Color.cyan); //关闭事件 jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { //建立一个窗口 new JFrameDemo().init(); }}
标签居中:
package com.cola.lesson04;import javax.swing.*;import java.awt.*;public class JframeDemo02 { public static void main(String[] args) { new MyJframe2().init(); }}class MyJframe2 extends JFrame{ public void init(){ this.setBounds(10,10,200,300); this.setVisible(true); Container container = this.getContentPane(); container.setBackground(Color.BLUE); //设置文字 Jlable JLabel lable = new JLabel("欢迎来到狂神说java系列节目"); //让文本标签居中 lable.setHorizontalAlignment(SwingConstants.CENTER); //容器实例化 this.add(lable); }}
3.2、弹窗
JDialog,用来被弹出,默认有关闭实现。
package com.cola.lesson04;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//主窗口public class DialogDemo extends JFrame { public DialogDemo(){ this.setVisible(true); this.setSize(700,500); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //JFrame 放东西,容器 Container container = this.getContentPane(); //绝对布局 container.setLayout(null); //按钮 JButton button = new JButton("点击弹出一个对话框"); //创建 button.setBounds(30,30,200,50); //点击按钮,弹弹窗 button.addActionListener(new ActionListener() { //监听器 @Override public void actionPerformed(ActionEvent e) { //弹窗 new MyDialogDemo(); } }); container.add(button); } public static void main(String[] args) { new DialogDemo(); }}//弹窗的窗口class MyDialogDemo extends JDialog{ public MyDialogDemo() { this.setVisible(true); this.setBounds(100,100,500,500); Container container = this.getContentPane(); container.setLayout(null); container.add(new Label("我是傻逼")); }}
3.3、标签
label
new JLabel("xxx")
图标 ICON
package com.cola.lesson04;import javax.swing.*;import java.awt.*;//图标,需要实现类,Frame继承public class IconDemo extends JFrame implements Icon { private int width; private int height; public IconDemo(){} //无参构造 public IconDemo(int width,int height){ this.width = width; this.height = width; } public void init(){ IconDemo iconDemo = new IconDemo(15, 15); //图标放在标签上,也可以放在按钮上。 JLabel label = new JLabel("icontest", iconDemo, SwingConstants.CENTER); Container container = getContentPane(); container.add(label); this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new IconDemo().init(); } @Override public void paintIcon(Component c, Graphics g, int x, int y) { g.fillOval(x,y,width,height); } @Override public int getIconWidth() { return width; } @Override public int getIconHeight() { return height; }}
图片Icon
package com.cola.lesson04;import javax.swing.*;import java.awt.*;import java.net.URL;public class ImageIconDemo extends JFrame { public ImageIconDemo(){ //获取图片地址 JLabel label = new JLabel("ImageIcon"); URL url = ImageIconDemo.class.getResource("tx.jpg"); ImageIcon imageIcon = new ImageIcon(url);//命名不要冲突了 label.setIcon(imageIcon); label.setHorizontalAlignment(SwingConstants.CENTER); Container contentPane = getContentPane(); contentPane.add(label); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setBounds(200,200,200,200); } public static void main(String[] args) { new ImageIconDemo(); }}
3.4、面板
JPanel
package com.cola.lesson05;import javax.swing.*;import java.awt.*;public class TestJPanel extends JFrame { public TestJPanel() { 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("1")); panel2.add(new JButton("1")); panel3.add(new JButton("1")); panel3.add(new JButton("1")); panel4.add(new JButton("1")); panel4.add(new JButton("1")); panel4.add(new JButton("1")); panel4.add(new JButton("1")); panel4.add(new JButton("1")); panel4.add(new JButton("1")); container.add(panel1); container.add(panel2); container.add(panel3); container.add(panel4); setVisible(true); setSize(500,500); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestJPanel(); }}
JScrollPanel
package com.cola.lesson05;import javax.swing.*;import java.awt.*;public class JScrollDemo extends JFrame { public JScrollDemo(){ Container container = this.getContentPane(); //文本域 JTextArea textArea = new JTextArea(20, 50); textArea.setText("欢迎学习狂神说JAVA"); //Scroll面板 JScrollPane scrollPane = new JScrollPane(textArea); container.add(scrollPane); this.setVisible(true); setBounds(100,100,300,150); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JScrollDemo(); }}
3.5、按钮
图片按钮
package com.cola.lesson05;import javax.swing.*;import java.awt.*;import java.net.URL;public class JButtonDemo01 extends JFrame { public JButtonDemo01() { Container container = this.getContentPane(); //将图片变为图标 URL resource = JButtonDemo01.class.getResource("tx.jpg"); Icon icon = new ImageIcon(resource); //把这个图标放在按钮上 JButton button = new JButton(); button.setIcon(icon); button.setToolTipText("图片按钮"); //add container.add(button); this.setVisible(true); setSize(500,300); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JButtonDemo01(); }}
单选按钮
package com.cola.lesson05;import javax.swing.*;import java.awt.*;import java.net.URL;public class JButtonDemo02 extends JFrame { public JButtonDemo02() { Container container = this.getContentPane(); //单选框 JRadioButton radioButton01 = new JRadioButton("JRadioButton01"); JRadioButton radioButton02 = new JRadioButton("JRadioButton01"); JRadioButton radioButton03 = new JRadioButton("JRadioButton01"); //由于单选框只能选择一个,分组 一个组中只能选择一个。 ButtonGroup group = new ButtonGroup(); group.add(radioButton01); group.add(radioButton02); group.add(radioButton03); container.add(radioButton01,BorderLayout.CENTER); container.add(radioButton02,BorderLayout.NORTH); container.add(radioButton03,BorderLayout.SOUTH); this.setVisible(true); setSize(500,300); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JButtonDemo02(); }}
复选按钮
package com.cola.lesson05;import javax.swing.*;import java.awt.*;public class JButtonDemo03 extends JFrame { public JButtonDemo03() { Container container = this.getContentPane(); //多选框 JCheckBox checkBox01 = new JCheckBox("checkBox01"); JCheckBox checkBox02 = new JCheckBox("checkBox02"); container.add(checkBox01,BorderLayout.SOUTH); container.add(checkBox02,BorderLayout.NORTH); this.setVisible(true); setSize(500,300); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JButtonDemo03(); }}
3.6、列表
下拉框
package com.cola.lesson06;import javax.swing.*;import java.awt.*;public class TestComboboxDemo01 extends JFrame { public TestComboboxDemo01() { Container container = this.getContentPane(); JComboBox status = new JComboBox(); status.addItem(null); status.addItem("正在热映"); status.addItem("已下架"); status.addItem("即将上映"); container.add(status); setVisible(true); setSize(500,350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestComboboxDemo01(); }}
列表框
package com.cola.lesson06;import javax.swing.*;import java.awt.*;import java.util.Vector;public class TestComboboxDemo02 extends JFrame { public TestComboboxDemo02() { Container container = this.getContentPane(); //生成列表内容 //String[] contents = {"1","2","3"}; Vector contents = new Vector(); //列表中需要放内容 JList list = new JList(contents); contents.add("zhangsan"); contents.add("lisi"); contents.add("wangwu"); container.add(list); setVisible(true); setSize(500,350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestComboboxDemo02(); }}
应用场景
- 选择地区,或者一些单个选项
- 列表,展示信息,一般是动态扩容!
3.7、文本框
-
文本框
package com.cola.lesson06;import javax.swing.*;import java.awt.*;import java.util.Vector;public class TestTextDemo01 extends JFrame { public TestTextDemo01() { Container container = this.getContentPane(); JTextField jTextField = new JTextField("hello"); JTextField jTextField2 = new JTextField("world",20); container.add(jTextField,BorderLayout.NORTH); container.add(jTextField2,BorderLayout.SOUTH); setVisible(true); setSize(500, 350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestTextDemo01(); }} -
密码框
package com.cola.lesson06;import javax.swing.*;import java.awt.*;public class TestTextDemo02 extends JFrame { public TestTextDemo02() { Container container = this.getContentPane(); JPasswordField passwordField = new JPasswordField(); passwordField.setEchoChar('*'); container.add(passwordField); setVisible(true); setSize(500, 350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestTextDemo02(); }} -
文本域
package com.cola.lesson05;import javax.swing.*;import java.awt.*;public class JScrollDemo extends JFrame { public JScrollDemo(){ Container container = this.getContentPane(); //文本域 JTextArea textArea = new JTextArea(20, 50); textArea.setText("欢迎学习狂神说JAVA"); //Scroll面板 JScrollPane scrollPane = new JScrollPane(textArea); container.add(scrollPane); this.setVisible(true); setBounds(100,100,300,150); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JScrollDemo(); }}
贪吃蛇
帧,如果时间片足够小,就是动画,一秒30帧 60帧。连起来是动画,拆开就是静态的图片。
键盘监听
定时器 Timer
- 定义数据
- 画上去
- 监听事件
- 键盘
- 事件
给时光以生命,给岁月以文明。

浙公网安备 33010602011771号