GUI基础知识

article/2025/9/23 12:29:07

GUI编程

1,简介

  1. 图形用户界面,Graphical User Interface,又称图形用户接口,是指采用图形方式显示的计算机操作用户界面。
  2. GUI的核心技术:AWT,Swing

2,Awt

2.1 AWT简介

  1. AWT:Abstract Window Toolkit,抽象窗口工具包,该包提供了一套与本地图形界面进行交互的接口,是Java提供的用来建立和设置Java的GUI的基本工具
  2. 包含了很多类和接口
  3. 元素:窗口,按钮,文本框
  4. java.awt
    在这里插入图片描述

2.2 组件与容器

1, Frame
package com.ym.lesson01;import java.awt.*;public class FrameTest {public static void main(String[] args) {//Frame类    看源码Frame frame = new Frame("我的第一个图形用户界面窗口");//设置可见性frame.setVisible(true);//设置窗口大小frame.setSize(400,400);//设置背景颜色frame.setBackground(Color.blue);//设置弹出的初始位置frame.setLocation(200,200);//设置窗口大小固定frame.setResizable(false);}
}

在这里插入图片描述

生成多个Frame

package com.ym.lesson01;import java.awt.*;public class FrameTest2 {public static void main(String[] args) {MyFrame myFrame1 = new MyFrame(100, 100, 200, 200, Color.green);MyFrame myFrame2 = new MyFrame(300, 100, 200, 200, Color.green);MyFrame myFrame3 = new MyFrame(100, 300, 200, 200, Color.green);MyFrame myFrame4 = new MyFrame(300, 300, 400, 400, Color.green);}
}
//封装
class MyFrame extends Frame{static int id=0;public  MyFrame(int x,int y,int w,int h,Color color){super("MyFrame"+(++id));//setLocation(200,200);//setSize(400,400);setBounds(x,y,w,h);setBackground(color);setVisible(true);setResizable(false);}
}

在这里插入图片描述

2,Panel

解决了窗口关闭问题

package com.ym.lesson01;import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;public class PanelTest {public static void main(String[] args) {Frame frame = new Frame("frame");Panel panel = new Panel();//设置布局frame.setLayout(null);//frame坐标,背景颜色frame.setBounds(100,100,200,200);frame.setBackground(new Color(35, 128, 90));//panel坐标,背景颜色panel.setBounds(50,50,50,50);panel.setBackground(new Color(55, 91, 128));//frame.add(panel)frame.add(panel);frame.setVisible(true);frame.setResizable(false);//监听事件,监听窗口关闭事件 system.exit(0)//适配器模式frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {
//                super.windowClosing(e);//结束进程System.exit(0);}});}
}

在这里插入图片描述

2.3,布局管理器

2.3.1 流式布局,FlowLayout
package com.ym.lesson01;import java.awt.*;public class FlowLayoutTest {public static void main(String[] args) {Frame frame = new Frame();Button button1 = new Button("1");Button button2 = new Button("2");Button button3 = new Button("3");frame.setBounds(100,100,200,200);frame.setVisible(true);frame.add(button1);frame.add(button2);frame.add(button3);//FlowLayout
//        frame.setLayout(new FlowLayout());//默认center
//        frame.setLayout(new FlowLayout(FlowLayout.LEFT));//左frame.setLayout(new FlowLayout(FlowLayout.RIGHT));//右}
}

在这里插入图片描述

3.2 东南西北中,BorderLayout
package com.ym.lesson01;import java.awt.*;public class BorderLayoutTest {public static void main(String[] args) {Frame frame = new Frame();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.setBounds(100,100,100,100);frame.setVisible(true);}
}

在这里插入图片描述

2.3.3 表格布局,GridLayout
package com.ym.lesson01;import java.awt.*;public class GridLayoutTest {public static void main(String[] args) {Frame frame = new Frame();Button btn1 = new Button("btn1");Button btn2 = new Button("btn2");Button btn3 = new Button("btn3");Button btn4 = new Button("btn4");Button btn5 = new Button("btn5");Button btn6 = new Button("btn6");frame.add(btn1);frame.add(btn2);frame.add(btn3);frame.add(btn4);frame.add(btn5);frame.add(btn6);frame.setLayout(new GridLayout(3,2));frame.setVisible(true);
//        frame.setSize(200,200);frame.pack();//java中的一个函数,确定frame的最佳大小}
}

在这里插入图片描述

2.3.4 练习

在这里插入图片描述

package com.ym.lesson01;import javax.swing.border.Border;
import java.awt.*;public class Test {public static void main(String[] args) {Frame frame = new Frame();frame.setVisible(true);frame.setBounds(100,100,400,300);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));Panel p4 = new Panel();p4.setLayout(new GridLayout(2,2));p1.add(new Button("p1_btn_west"),BorderLayout.WEST);p1.add(new Button("p1_btn_east"),BorderLayout.EAST);p2.add(new Button("p2_btn_top"));p2.add(new Button("p2_btn_bottom"));p1.add(p2,BorderLayout.CENTER);//下面p3.add(new Button("p3_btn_west"),BorderLayout.WEST);p3.add(new Button("p3_btn_east"),BorderLayout.EAST);p4.add(new Button("p4_btn_top1"));p4.add(new Button("p4_btn_top2"));p4.add(new Button("p4_btn_bottom1"));p4.add(new Button("p4_btn_bottom2"));p3.add(p4,BorderLayout.CENTER);frame.add(p1);frame.add(p3);}
}

在这里插入图片描述

2.4, 事件监听

package com.ym.lesson02;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 ActionEventTest {public static void main(String[] args) {Frame frame = new Frame();Button button = new Button();
//因为addActionListener()需要一个ActionListener,
//所以构造了一个MyActionListener类MyActionListener myActionListener = new MyActionListener();button.addActionListener(myActionListener);frame.add(button,BorderLayout.CENTER);frame.setVisible(true);frame.pack();windowClose(frame);}//关闭窗口方法private static void windowClose(Frame frame){frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}}class MyActionListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("111");}
}
2.4.1 多个按钮共享一个事件
package com.ym.lesson02;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 ActionEventTest2{public static void main(String[] args) {Frame frame = new Frame();Button btn1 = new Button("start");Button btn2 = new Button("stop");btn1.setActionCommand("btn1_start");//设置标签值MyListener myListener = new MyListener();btn1.addActionListener(myListener);btn2.addActionListener(myListener);frame.add(btn1,BorderLayout.NORTH);frame.add(btn2,BorderLayout.SOUTH);frame.setVisible(true);frame.pack();}
static class MyListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {System.out.println(e.getActionCommand());//getActionCommand()得到按钮上的labelif(e.getActionCommand().equals("btn1_start")){System.out.println("点击了开始btn1_start");}else{System.out.println("点击了结束stop");}}
}}

2.5,输入框TextField

package com.ym.lesson02;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class TextFieldTest {public static void main(String[] args) {MyFrame myFrame = new MyFrame();}
}class MyFrame extends Frame{public MyFrame(){TextField textField = new TextField();add(textField);MyTextListener myTextListener = new MyTextListener();//按下回车键就会触发事件textField.addActionListener(myTextListener);//输入框中的文本替换为*,但控制台显示的是文本,不是*textField.setEchoChar('*');pack();setVisible(true);}
}
class MyTextListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {System.out.println(e.getSource());//e.getSource()得到资源,返回objectTextField textField = (TextField) e.getSource();System.out.println(textField.getText());//获得输入框中的文本textField.setText("");//按下回车就会清空输入框中的内容}
}

2.6,简易计算器

在这里插入图片描述

package com.ym.lesson02;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;//简易计算器
public class CalcTest {public static void main(String[] args) {Calculator calculator = new Calculator();}
}//计算器类
class Calculator extends Frame {public Calculator(){//三个文本框TextField num1 = new TextField(10);TextField num2 = new TextField(10);TextField num3 = new TextField(20);//一个按钮Button button = new Button("=");button.addActionListener(new MyCalculatorListener(num1,num2,num3));//一个标签Label label = new Label("+");//流式布局,FlowLayoutsetLayout(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;}@Overridepublic 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.ym.lesson02;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;//简易计算器
public class CalcTest {public static void main(String[] args) {Calculator calculator = new Calculator();calculator.loadFrame();}
}//计算器类
class Calculator extends Frame {//属性TextField num1;TextField num2;TextField num3;//方法public void loadFrame(){//三个文本框num1 = new TextField(10);num2 = new TextField(10);num3 = new TextField(10);//一个按钮Button button = new Button("=");//为按钮添加监听事件button.addActionListener(new MyCalculatorListener(this));//一个标签Label label = new Label("+");//流式布局,FlowLayoutsetLayout(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;}@Overridepublic void actionPerformed(ActionEvent e) {//1,获得加数和被加数int n1 = Integer.parseInt(calculator.num1.getText());int n2 = Integer.parseInt(calculator.num2.getText());//2,加法运算后将得数放到第三个框中calculator.num3.setText(""+(n1+n2));//3,清除前两个框中的内容calculator.num1.setText("");calculator.num2.setText("");}
}
内部类
package com.ym.lesson02;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;//简易计算器
public class CalcTest {public static void main(String[] args) {Calculator calculator = new Calculator();calculator.loadFrame();}
}//计算器类
class Calculator extends Frame {//属性TextField num1;TextField num2;TextField num3;//方法public void loadFrame(){//三个文本框num1 = new TextField(10);num2 = new TextField(10);num3 = new TextField(20);//一个按钮Button button = new Button("=");//为按钮添加监听事件button.addActionListener(new MyCalculatorListener());//一个标签Label label = new Label("+");//流式布局,FlowLayoutsetLayout(new FlowLayout());add(num1);add(label);add(num2);add(button);add(num3);pack();setVisible(true);}//监听器类private class MyCalculatorListener implements ActionListener{@Overridepublic 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("");}}
}

2.7画笔paint

package com.ym.lesson03;import java.awt.*;public class PaintTest {public static void main(String[] args) {new MyPaint().loadFrame();}
}class MyPaint extends Frame{public void loadFrame(){setVisible(true);setBounds(100,100,400,400);}//画笔@Overridepublic void paint(Graphics g) {
//        super.paint(g);//画笔颜色
//        g.setColor(Color.green);//画圆g.drawOval(100,100,100,100);g.fillOval(100,100,100,100);//实心圆//        g.setColor(Color.red);g.fillRect(200,200,100,100);//实心圆//画笔用完之后要还原到画笔默认的颜色}
}

2.8鼠标监听

2.9窗口监听

package com.ym.lesson03;import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class WindowListenerTest {public static void main(String[] args) {new WindowFrame();}
}
class WindowFrame extends Frame {public WindowFrame() {setBackground(Color.blue);setVisible(true);setBounds(100,100,200,200);//        addWindowListener(new WindowListener());this.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.out.println("windowClosing");}@Overridepublic void windowActivated(WindowEvent e) {WindowFrame wf=(WindowFrame) e.getSource();wf.setTitle("windowActivated");System.out.println("windowActivated");}@Overridepublic void windowDeactivated(WindowEvent e) {System.out.println("windowDeactivated");}});}class WindowListener extends WindowAdapter{@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);//程序退出}}
}

2.10键盘监听

package com.ym.lesson03;import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;public class KeyListenerTest {public static void main(String[] args) {new KeyFrame();}
}class KeyFrame extends Frame{public KeyFrame(){setBounds(100,100,200,200);setVisible(true);this.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {int keyCode = e.getKeyCode();if(keyCode==KeyEvent.VK_UP){System.out.println("你按下了上键");}}});}
}

3, Swing

3.1窗口,面板

package com.ym.lesson04;import javax.swing.*;
import java.awt.*;public class JFrameTest {public static void main(String[] args) {new JFrameTest().init();}//init()初始化public void init(){JFrame jFrame = new JFrame();jFrame.setVisible(true);jFrame.setBounds(10,10,200,200);jFrame.setBackground(Color.blue);//获得一个容器Container contentPane = jFrame.getContentPane();contentPane.setBackground(Color.red);JLabel jLabel = new JLabel("哈哈哈");//设置水平对齐jLabel.setHorizontalAlignment(SwingConstants.CENTER);jFrame.add(jLabel);}
}

3.2 弹窗JDialog

package com.ym.lesson04;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class DialogTest extends JFrame {public DialogTest() {this.setVisible(true);this.setSize(400,300);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);Container container = this.getContentPane();container.setLayout(null);//绝对布局JButton jButton = new JButton("点击弹出对话框");jButton.setBounds(30,30,100,100);jButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {MyDialog myDialog = new MyDialog();}});container.add(jButton);}public static void main(String[] args) {DialogTest dialogTest = new DialogTest();}
}class MyDialog extends JDialog{public MyDialog() {this.setVisible(true);this.setBounds(100,100,100,100);
//        this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);//默认有关闭事件Container container = this.getContentPane();container.setLayout(null);container.add(new JLabel("abc"));}
}

3.3 标签

图标和图片图标

package com.ym.lesson04;import javax.swing.*;
import java.awt.*;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=height;}public void init(){IconDemo iconDemo = new IconDemo(20, 20);//把图标放在标签上JLabel jLabel = new JLabel("iconDemo",iconDemo,SwingConstants.CENTER);Container container = getContentPane();container.add(jLabel);this.setVisible(true);this.setBounds(10,10,150,150);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new IconDemo().init();}@Overridepublic void paintIcon(Component c, Graphics g, int x, int y) {g.fillOval(x,y,width,height);}@Overridepublic int getIconWidth() {return width;}@Overridepublic int getIconHeight() {return height;}
}
package com.ym.lesson04;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class ImageIconDemo extends JFrame {public  ImageIconDemo(){JLabel jLabel = new JLabel("ImageIcon");//获取图片地址URL url = ImageIconDemo.class.getResource("imageicondemo.png");ImageIcon imageIcon = new ImageIcon(url);//注意命名冲突问题jLabel.setIcon(imageIcon);jLabel.setHorizontalAlignment(SwingConstants.CENTER);Container container = getContentPane();container.add(jLabel);this.setVisible(true);this.setBounds(10,10,100,100);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new ImageIconDemo();}}

3.4 面板

JPanel
package com.ym.lesson05;import javax.swing.*;
import java.awt.*;public class JPanelDemo extends JFrame {public JPanelDemo(){Container container = getContentPane();container.setLayout(new GridLayout(1,2,5,5));JPanel jPanel = new JPanel(new GridLayout(2,1));JPanel jPane2 = new JPanel(new GridLayout(1,2));jPanel.add(new JButton("1"));jPanel.add(new JButton("1"));jPane2.add(new JButton("2"));jPane2.add(new JButton("2"));container.add(jPanel);container.add(jPane2);setVisible(true);setBounds(10,10,100,100);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JPanelDemo();}
}

在这里插入图片描述

JScrollPane
package com.ym.lesson05;import javax.swing.*;
import java.awt.*;public class JScrollDemo extends JFrame {public JScrollDemo(){//文本域JTextArea jTextArea = new JTextArea(10,10);jTextArea.setText("你好呀");//scroll面板JScrollPane jScrollPane = new JScrollPane(jTextArea);Container container = getContentPane();container.add(jScrollPane);this.setVisible(true);this.setBounds(10,10,200,200);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JScrollDemo();}
}

3.5 按钮

Jbutton
package com.ym.lesson05;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class JButtonDemo01 extends JFrame {public JButtonDemo01() {//将图片变为图片图标URL url = JButtonDemo01.class.getResource("btnicon.png");ImageIcon imageIcon = new ImageIcon(url);//把图标放在按钮上JButton jButton = new JButton();jButton.setIcon(imageIcon);jButton.setToolTipText("图片图标按钮");Container container = this.getContentPane();container.add(jButton);this.setVisible(true);this.setSize(100,100);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JButtonDemo01();}
}
单选按钮
package com.ym.lesson05;import javafx.scene.control.RadioButton;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class JButtonDemo02 extends JFrame {public JButtonDemo02() {Container container = this.getContentPane();//将图片变为图片图标URL url = JButtonDemo02.class.getResource("btnicon.png");ImageIcon imageIcon = new ImageIcon(url);//把图标放在按钮上JButton jButton = new JButton();jButton.setIcon(imageIcon);//单选框JRadioButton jRadioButton1 = new JRadioButton("jRadioButton1");JRadioButton jRadioButton2 = new JRadioButton("jRadioButton2");JRadioButton jRadioButton3 = new JRadioButton();//把这三个按钮分到一个组里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);this.setVisible(true);this.setSize(100,100);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JButtonDemo02();}
}
复选按钮
package com.ym.lesson05;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class JButtonDemo03 extends JFrame {public JButtonDemo03() {Container container = this.getContentPane();//将图片变为图片图标URL url = JButtonDemo03.class.getResource("btnicon.png");ImageIcon imageIcon = new ImageIcon(url);//把图标放在按钮上JButton jButton = new JButton();jButton.setIcon(imageIcon);//复选框JCheckBox jCheckBox1 = new JCheckBox("jCheckBox1");JCheckBox jCheckBox2 = new JCheckBox("jCheckBox2");container.add(jCheckBox1,BorderLayout.NORTH);container.add(jCheckBox2,BorderLayout.SOUTH);
//        this.setLayout(new FlowLayout(FlowLayout.LEFT));
//        this.setLayout(new GridLayout(2,1));this.setVisible(true);this.setSize(100,100);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JButtonDemo03();}
}

3.6 列表

下拉列表
package com.ym.lesson06;import javafx.scene.control.ComboBox;import javax.swing.*;
import java.awt.*;public class ComboboxDemo extends JFrame {public ComboboxDemo() {Container container = this.getContentPane();JComboBox status = new JComboBox();status.addItem("就业");status.addItem("考研");status.addItem("考公");container.add(status);this.setVisible(true);this.setBounds(10,10,100,100);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new ComboboxDemo();}
}
列表框
package com.ym.lesson06;import javax.swing.*;
import java.awt.*;
import java.util.Vector;public class ComboboxDemo2 extends JFrame {public ComboboxDemo2() {Container container = this.getContentPane();//生成列表的内容String[] contents1={"ha","haha","哈哈哈"};JList jList1 = new JList(contents1);container.add(jList1,BorderLayout.NORTH);Vector contents2 = new Vector();contents2.add("la");contents2.add("lala");contents2.add("啦啦啦");JList jList2 = new JList(contents2);container.add(jList2,BorderLayout.SOUTH);this.setVisible(true);this.setBounds(10,10,100,100);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new ComboboxDemo2();}
}

3.7 文本框

文本框,文本域和密码框
package com.ym.lesson06;import javax.swing.*;
import java.awt.*;
import java.util.Vector;public class TextDemo extends JFrame {public TextDemo() {Container container = this.getContentPane();//文本框JTextFieldJTextField jTextField = new JTextField("haha",8);//文本域JTextAreaJTextArea jTextArea = new JTextArea("hahahahahha",8,8);//密码框JPasswordFieldJPasswordField jPasswordField = new JPasswordField("12345678",8);JPanel jPanel = new JPanel();jPanel.add(jTextField);jPanel.add(jTextArea);jPanel.add(jPasswordField);JScrollPane jScrollPane = new JScrollPane(jPanel);container.add(jScrollPane);this.setVisible(true);this.setBounds(10,10,100,100);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new TextDemo();}
}

http://chatgpt.dhexx.cn/article/h69UiSCq.shtml

相关文章

Java——GUI编程

GUI编程 1、简介2、AWT(抽象的窗口工具)AWT简介1、Frame的使用:2、面板 panel3、布局管理器3.1 流式布局3.2 东西南北中3.3 表格布局 4、事件监听5、文本框(TextField)的监听6、制作简易计算器7、画笔8、鼠标监听9、窗…

GUI编程详解

1.简介 GUI的核心技术:Swing AWT GUI缺点: 1. 界面不美观2. 需要jre环境为什么要学习GUI? 可以写出自己想要的工具。实际工作中可能需要维护swing界面了解MVC和监听。 2.AWT 2.1相关知识 介绍: 包含了很多类和接口。用于图形…

python GUI入门(一入门介绍)

CUI: 命令行界面,conmmand line user Interface GUI: Graphical User Interface 1、python常用的主要跨平台图形用户界面库 1.1 Tkinter python自带的GUT库,“官方支持”,无须进行额外的下载安装,只要导入tkinter包即可使用。 …

GUI系统

1.gui概念 2.OSD实现 1.概念 OSD是on-screen display的简称,即屏幕菜单式调节方式。一般是按Menu键后屏幕弹出的显示器各项调节项目信息的矩形菜单,可通过该菜单对显示器各项工作指标包括色彩、模式、几何形状等进行调整,从而达到最佳的使用…

Python之GUI编程

一、常用的GUI库 Tkinter:tkinter(Tk interface)是Python的标准GUI库,支持跨平台的GUI程序开发,tkinter适合小型的GUI程序编写,也特别适合初学者学习GUI编程。wxPython:wxPython是比较流行的GU…

快速入门GUI-guider

快速入门GUI-guider(本教程基于LVGL-v8.20) 前言一、什么是GUI Guider?二、使用教程1.下载软件2.熟悉LVGL各种组件3.新建工程4.上手体验5.代码移植 完结撒花 前言 本教程要基于有移植好的LVGL—8.2.0的代码为基础,对于不懂怎么移…

Python-GUI界面设计(tkinter)

文章目录 前言一、函数方法二、导入三、窗口[1]. 创建[2]. 标题[3]. 大小[4]. 背景[5]. 删除 四、按钮[1]. 创建[2]. 放置(绝对位置)[3]. 放置(相对位置)[4]. 代码 五、单行文本[1]. 创建[2]. 代码 六、多行文本[1]. 创建[2]. 获取…

GUI编程

一,简介 GUI编程(Graphical User Interface),即用户图形界面编程。 GUI淘汰原因:界面不够美观,需要jre环境。 学习GUI的好处:1,为后期学习MVC架构打好基础;2,了解监听;3&…

[java/初学者/GUI编程]GUI界面设计——界面组件类

前言 GUI,即图形用户界面,其英文全称是Graphics User Interface。 它是基于图形的界面,windows就是一个图形用户界面的操作系统,而DOS是基于命令提示符的操作系统,GUI编程就是编出一个图形用户界面的软件,它使用图形的方式,以菜…

QT GUI编程

QT GUI编程 一、QT基础1.1、QT简介1.2、QT应用范围1.3、开发环境1.4、QT软件下载安装教程1.5、QT内存管理1.6、第一个QT程序1.7、打印跟踪1.8、QT工程示例1.9、QT 图形编程1.10、信号与槽1.11、QT实现心仪的计算器1.12、将QT文件单独提取出来自由使用 二、窗口部件2.1、常用类介…

GUI(图形界面编程)

(1)GUI 与CLI GUI •Graphical User Interface(图形用户接口)。 •用图形的方式,来显示计算机操作的界面,这样更方便更直观。 CLI •Command line User Interface (命令行用户接口) •就是常见的Dos命令行操作。 •需要…

GUI概述

GUI简介 GUI(Graphics User Interface),中文名称为图形用户界面,是指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。 早期,电脑向用户提…

GUI(图形用户界面)

GUI全称是Graphical User Interface ,即图形用户界面。GUI就是可以让用户直接操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。 1.Swing概述 Swing是Java语言开发图形化界面的一个工具包。它以抽象窗口工具包(AWT&…

虚拟存储技术

一.实现内存扩充的技术: (1)覆盖技术: 在程序运行中,在不同时刻把同一个存储区分配给不同程序段和数据段,实现存储区共享。适用于连续存储(单一连续区分配,分区) 如图B…

浅谈进程地址空间与虚拟存储空间

早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用…

虚拟存储器系统

技术来源 来源1:来源于服务器中虚拟化feature的实现,不同的程序需要共享一片硬件资源,包括计算资源与存储资源;如何有效且安全的共享存储器就是关键。来源2:消除有限的主存容量对大的程序的限制。远古时代&#xff0c…

虚拟存储器/虚拟内存

器为每个程序提供了一个大的、一致的、私有地址空间。 三个重要功能: 将主存看成是磁盘的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据。为每个进程提供了一致的私有空间。保护每个进程的地址空间不被其他进程破…

5.虚拟存储管理

虚拟存储管理 文章目录 虚拟存储管理1.虚拟存储器概述1.1常规存储管理方式的特征和局部性原理1.2虚拟存储器的定义与特征1.3虚拟存储器的实现方法 2.请求分页存储管理方式2.1请求分页存储管理方式基本思想2.2请求分页中的硬件支持2.3内存分配策略和分配算法2.4调页策略 3.页面置…

(五)虚拟存储概念

1.需求背景 计算机系统内存空间不够用。 2.覆盖和交换 覆盖技术:把程序划分成功能独立的模块,将不会同时执行的模块共享同一块内存区域。 缺点:编程困难,增加了执行时间 交换技术:增加正在运行或需要运行的程序的内…

存储虚拟化技术的介绍

导读Java虚拟机内存的各个区域,以及这些区域的作用、服务对象以及其中可能产生的问题,作为大家的面试宝典。那一起来学习—存储虚拟化技术。 数据在整个计算机系统是最重要的一部分,也是最珍贵的。数据的存储一直是一个热议的话题&#xff0c…