精华内容
下载资源
问答
  • 在java 图形界面中,怎么把一张图片设为窗口的背景,然后可以继续在上面添加其他组件,就是说后面添加的组件不会把那个背景图片给覆盖了?有谁能指教一二,谢谢了。
  • JAVA图形界面

    2014-04-07 23:32:37
    JAVA图形用户界面设计,Java程序广泛的应用在图形用户设计方面,随着操作系统的发展,不论是Windows还是Unix等操作系统,都支持图形用户界面操作方式。...Java程序的跨平台性更体现了它在图形用户界面设计的优势。
  • Java图形界面中文字符乱码显示小方框 解决方法:(IntelliJ IDEA) 运行(RUN)选择编辑配置(Edit Configuration) 虚拟机选项(VM options)输入-Dfile.encoding=GBK 即可解决

    Java图形界面中文字符乱码显示小方框

    在这里插入图片描述

    解决方法:(IntelliJ IDEA)

    • 在运行(RUN)中选择编辑配置(Edit Configuration)
      在这里插入图片描述
    • 虚拟机选项(VM options)中输入-Dfile.encoding=GBK
      在这里插入图片描述
    • 即可解决
      在这里插入图片描述
    展开全文
  • 准备用几篇文章把JAVA图形界面知识点整理出来; 这一片主要说一下JAVA中的容器和布局; 首先放在开头的是,写图形界面编程要加上这两行代码; import java.awt.*; import javax.swing.*; 不然可不好使; 一、...

    准备用几篇文章把JAVA的图形界面知识点整理出来;
    这一片主要说一下JAVA中的容器和布局;
    首先放在开头的是,写图形界面编程要加上这两行代码;

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

    不然可不好使;
    在这里插入图片描述
    一、顶层容器JFrame

    首先在屏幕上显示的所有组件必须包含在某个容器中,而有些容器是可以嵌套的,在这个嵌套层次的最外层,必须是一个顶层容器;Swing中提供了四种;
    JFrame:一个带有标题行,控制按钮的独立窗口;
    JApplet:创建小程序时使用;
    JDialog:创建对话框时使用;
    JWindow:不带标题和控制按钮的窗口;

    这里主要说一下JFrame的用法;
    看例子来说明;

    public static void main(String[] args) {
    	JFrame frame=new JFrame("Demo");//构造方法显示标题
    	JButton button=new JButton("Press me");//构造方法显示按钮标题
    	frame.getContentPane().add(button,BorderLayout.CENTER);//添加按钮
    	frame.pack();//调整窗口
    	frame.setVisible(true);//显示到屏幕上
    	
    
    }
    

    那,这里面只要知道前两行的具体意思就行;
    通过构造方法设置标题;
    看一下运行结果:
    在这里插入图片描述
    只要知道怎么用JFrame就可以了先;
    之后我们再继续;

    二、内容窗格

    每个顶层容器都有一个内容窗格,实际上,顶层容器除了菜单之外的组件全都放在这个内容窗格上。将组件放入内容窗格有两种方法;
    1,

    public static void main(String[] args) {
    	JFrame frame=new JFrame("Demo");
    	JButton button=new JButton("Press me");
    	Container contentPane=frame.getContentPane();
    	contentPane.add(button,BorderLayout.CENTER);
    	frame.pack();
    	frame.setVisible(true);
    	
    
    }
    

    其中的Container contentPane=frame.getContentPane(); contentPane.add(button,BorderLayout.CENTER);
    可以换成上个例子中的frame.getContentPane().add(button,BorderLayout.CENTER);

    这回能理解代码中的四五行了吧,就是向内容窗格中添加控件;

    2,第二种方法是使用JPanel,下个点就会说;
    在这里插入图片描述

    三、面板JPanel;

    面板是一种用途广泛的容器,但是与顶层容器不同的是,面板不能独立存在,必须添加到其他容器内部,面板可以嵌套,由此可以设计出复杂的图形用户界面;
    我们还是通过例子来说明;

    public static void main(String[] args) {
    	JFrame frame=new JFrame("Frame with panel");
    	frame.getContentPane().setBackground(Color.CYAN);//设置背景色
    	JPanel panel=new JPanel();
    	panel.setBackground(Color.yellow);//创建面板设置背景色
    	JButton button=new JButton("Press me");
    	panel.add(button,BorderLayout.CENTER);//向面板添加按钮
    	frame.add(panel,BorderLayout.SOUTH);//向容器添加面板
    	frame.setSize(200, 200);//设置窗口大小
    	frame.setVisible(true);//显示
    
    }
    

    面板本身就是一个容器,所以自然可以放组件,面板又不能独立存在所以得放在容器内部;
    这就是面板的使用方法;
    看一下运行结果:
    在这里插入图片描述

    四、FlowLayout布局

    在默认情况下,FlowLayout将组件居中放置在某一行上。
    FlowLayout有三种构造方法要知道;

    	public FlowLayout(int,int,int)
    	public FlowLayout(int)
    	public FlowLayout()
    
    

    我们用例子来说明,例子中用的是最后无参的构造函数;

    public static void main(String[] args) {
    	JFrame frame=new JFrame("Frame with panel");
    	JButton b1,b2,b3,b4;
    	b1=new JButton("b1");
    	b2=new JButton("b2");
    	b3=new JButton("b3");
    	b4=new JButton("b4");
    	frame.getContentPane().setLayout(new FlowLayout());//使用FlowLayout布局
    	frame.add(b1);
    	frame.add(b2);
    	frame.add(b3);
    	frame.add(b4);
    	frame.setSize(200,200);
    	frame.setVisible(true);
    
    }
    

    很简单吧,看一下运行结果;
    在这里插入图片描述
    在这里插入图片描述

    五、BorderLayout布局;

    它是顶层容器中内容窗格的默认布局管理,它提供了一种较为复杂的布局管理方案,每个由BorderLayout管理的容器被分为东西南北中共5个区域(如果仔细看了之前的例子,会发现有这个布局的),分别用常量BorderLayout.NORTH或“North”等来表示

    看一下构造方法:
    BorderLayout();
    BorderLayout(int,int);

    我们还是用例子来说明

    public static void main(String[] args) {
    	JFrame frame=new JFrame("Frame with panel");
    	JButton b1,b2,b3,b4,b5;
    	b1=new JButton("b1");
    	b2=new JButton("b2");
    	b3=new JButton("b3");
    	b4=new JButton("b4");
    	b5=new JButton("b5");
    	frame.getContentPane().setLayout(new BorderLayout());//使用BorderLayout布局
    	frame.add(b1,BorderLayout.WEST);
    	frame.add(b2,BorderLayout.NORTH);
    	frame.add(b3,BorderLayout.EAST);
    	frame.add(b4,BorderLayout.SOUTH);
    	frame.add(b5,BorderLayout.CENTER);//五个方位添加按钮
    	frame.setSize(200,200);
    	frame.setVisible(true);
    
    }
    

    也很好理解吧;
    看一下运行截图;
    在这里插入图片描述
    在这里插入图片描述

    六、GridLayout布局

    GridLayout是一种网格试的布局管理器,他讲容器空间划分成若干行乘若干列的网格,组件依次放入其中,每个组件占据一格;
    看一下他的构造方法:
    GridLayout();
    GridLayout(int,int);
    GridLayout(int,int,int,int);

    依旧是用例子来说明他的用法;

    public static void main(String[] args) {
    	JFrame frame=new JFrame("Frame with panel");
    	JButton b1,b2,b3,b4,b5,b6;
    	b1=new JButton("b1");
    	b2=new JButton("b2");
    	b3=new JButton("b3");
    	b4=new JButton("b4");
    	b5=new JButton("b5");
    	b6=new JButton("b6");
    	frame.getContentPane().setLayout(new GridLayout(2,3));//划分为两行三列的布局
    	frame.add(b6);
    	frame.add(b5);
    	frame.add(b4);
    	frame.add(b3);
    	frame.add(b2);
    	frame.add(b1);
    	frame.setSize(200,400);
    	frame.setVisible(true);
    
    
    }
    

    是不是都非常好理解;
    在这里插入图片描述

    最后看一下运行截图;
    在这里插入图片描述

    关于容器和布局管理只整理这些了,这三种布局方法比较常用,当然还有一些其他的布局方法就需要自己去查阅资料掌握了!
    OK,end
    结束
    在这里插入图片描述

    展开全文
  • 在JAVA应用程序或者Applet运行时,如果用户进行某个操作,例如单机鼠标键或者输入字符,程序应当做出适当响应。 那举个例子来说,当我们点击某个按钮,会出现一个按钮事件,那么这个就是按钮的事件处理; 在这里呢,...

    在JAVA应用程序或者Applet运行时,如果用户进行某个操作,例如单机鼠标键或者输入字符,程序应当做出适当响应。
    那举个例子来说,当我们点击某个按钮,会出现一个按钮事件,那么这个就是按钮的事件处理;
    在这里呢,我们还是通过举例子来说明JAVA的事件处理;
    在这里插入图片描述
    首先我们在容器中加入一个按钮,我们给这个按钮添加事件处理;

    public static void main(String[] args) {
    	JFrame frame=new JFrame("event");
    	JButton b1;
    	b1=new JButton("b1");
    	frame.getContentPane().setLayout(new FlowLayout());
    	frame.add(b1);
    	frame.setSize(300,100);
    	frame.setVisible(true);
    
    
    }
    

    运行后的话;
    在这里插入图片描述

    现在我想点击这个按钮,在控制台有字符串输出;

    首先我们要新建一个类;
    加上接口并且重写其中方法(固定的);

    package array;
    import java.awt.event.*;
    public class ButtonHandler implements ActionListener{
    	public void actionPerformed(ActionEvent e){
    		System.out.println("点击了按钮");
    	}
    
    }
    

    当然还要加上头文件;

    然后回到主函数加上一行代码;

    b1.addActionListener(new ButtonHandler());
    

    就完全可以了;

    public static void main(String[] args) {
    	JFrame frame=new JFrame("event");
    	JButton b1;
    	b1=new JButton("b1");
    	frame.getContentPane().setLayout(new FlowLayout());
    	frame.add(b1);
    	b1.addActionListener(new ButtonHandler());
    	frame.setSize(300,100);
    	frame.setVisible(true);
    
    
    }
    

    然后我们运行看一下效果;
    在这里插入图片描述
    是不是很简单;

    在这里插入图片描述

    然后介绍第二种方法;

    我们直接及新建一个类让他继承与JBtton并且写上他的接口;
    写好构造方法,还有重写的actionPerformed方法;

    import java.awt.event.*;
    
    import javax.swing.*;
    
    public class Mybutton extends JButton implements ActionListener{
    	public Mybutton(String str) {
    		super(str);
    		this.addActionListener(this);
    	}
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		System.out.println("点击了按钮");
    	}
    
    
    
    

    然后我们的主函数里面,就可以一直用这个按钮了,想用的时候我就建一个,不用再写一个事件处理的类了;

    public static void main(String[] args) {
    	JFrame frame=new JFrame("event");
    	Mybutton b1;
    	b1=new Mybutton("b1");
    	frame.getContentPane().setLayout(new FlowLayout());
    	frame.add(b1);
    	b1.addActionListener(new ButtonHandler());
    	frame.setSize(300,100);
    	frame.setVisible(true);
    
    
    }
    

    运行效果和刚才的一模一样;

    第三种方法,我们不用新建类,直接就在主函数里面写全部的,如果代码不多的话可以这样,但如果代码很多就不建议这样;
    直接来代码吧;

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    public class test {
    public static void main(String[] args) {
    	JFrame frame=new JFrame("event");
    	JButton b1;
    	b1=new JButton("b1");
    	b1.addActionListener(new ActionListener(){
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			System.out.println("点击了按钮");
    		}
    	});
    	frame.getContentPane().setLayout(new FlowLayout());
    	frame.add(b1);
    	b1.addActionListener(new ButtonHandler());
    	frame.setSize(300,100);
    	frame.setVisible(true);
    
    
    }
    }
    

    虽然不用写接口和继承;
    但是依旧要写重写的方法;
    然后就是格式不要出错;
    运行结果和上面的都一样;

    到这里三种事件处理的方法就说完了;
    OK,结束;
    END;
    在这里插入图片描述

    展开全文
  • java图形界面

    2011-12-14 21:29:35
    这是一个图形界面的程序 包括一个面板画图形和打开与保存文件
  • Java图形界面实验

    千次阅读 2019-04-27 22:23:03
    Java图形界面设计 学一门编程类语言、特别是像 Java 、python 这样具有很强交互的编程类语言,图形界面是不可能避开的,我们呈现给用户的不能是只有我们自己能看懂的,或者是需要有一定编程知识的人才能看懂的应用,...

    Java图形界面设计

    学一门编程类语言、特别是像 Java 、python 这样具有很强交互的编程类语言,图形界面是不可能避开的,我们呈现给用户的不能是只有我们自己能看懂的,或者是需要有一定编程知识的人才能看懂的应用,做出让所有人都能使用的应用才是面向对象编程存在的意义,下面进行今天的实验内容。

    实验内容及要求:
    (1) 编写Application程序,在Frame中加入2个按钮(Button)和1个标签(Label),单击两个按钮,显示按钮的标签于Label。
    (2) 编写Application程序,在Frame中加入80个按钮,分20行4列,用GridLayout(网格)布局方式,按钮背景为黄色(Color.yellow),按钮文字颜色为红色(Color.red)。
    (3) 设计一个简单计算器,在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本框中。

    实验一:

    package test;
    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    public class test4 extends JFrame{
     //创建JPanle对象
     private JPanel jp = new JPanel();
     //创建按钮对象
     private JButton b1=new JButton("按钮1");
     private JButton b2 =new JButton("按钮2");
      
     //创建标签对象
     private JLabel j1= new JLabel();
      
     public test4() {
      jp.add(b1);
      jp.add(b2);
      jp.add(j1);
      this.add(jp);
      this.setTitle("CHEN");
      this.setBounds(100,100,400,130);
      b1.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        test4.this.j1.setText("按钮一内容");
       }
      });
      b2.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        test4.this.j1.setText("按钮二内容");
       }
      });
      this.setBounds(100,100,400,130);
      this.setVisible(true);
     }
     public static void main(String[] args) {
      new test4();
     }
    }
    

    实验结果:

    在这里插入图片描述
    实验二:

    package test;
    import java.awt.*;
    import javax.swing.*;
    public class test5 extends JFrame {
     private JPanel jp =new JPanel();
     private JButton [] jbArray =new JButton[80];
     public test5() {
      for(int i=0;i<jbArray.length;i++) {
       jbArray[i]=new JButton("按钮"+(i+1));
       jbArray[i].setForeground(Color.red);
       jbArray[i].setBackground(Color.yellow);
       jp.add(jbArray[i]);
       jp.setLayout(new GridLayout(20,4));
      }
      this.add(jp);
      this.setTitle("网格布局");
      this.setBounds(100,100,450,200);
      this.setVisible(true);
     }
     public static void main(String[] args) {
      new test5();
     }
    }
    

    实验结果:
    在这里插入图片描述

    实验三:

    package test;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    class Calculate {
        public double cal(double data1, double data2, String op) {
            // TODO Auto-generated method stub
            double rel = 0;
            switch (op) {
            case "+":
                rel = data1 + data2;
                break;
            case "-":
                rel = data1 - data2;
                break;
            case "*":
                rel = data1 * data2;
                break;
            case "/":
                rel = data1 / data2;
                break;
            default:
                break;
            }
            return rel;
        }
    }
    public class test7 extends JFrame implements ActionListener{
     JLabel label1 = new JLabel("第一位操作数");
        JLabel label2 = new JLabel("第二位操作数");
        JLabel label3 = new JLabel("计算结果");
        JTextField textField1 = new JTextField();
        JTextField textField2 = new JTextField();
        JTextField textField = new JTextField();
        JButton button1 = new JButton("+");
        JButton button2 = new JButton("-");
        JButton button3 = new JButton("*");
        JButton button4 = new JButton("/");  
    //    JButton button = new JButton("计算");
        public test7() {
            try {
                Init();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
        private void Init() throws Exception{
            // TODO Auto-generated method stub
            getContentPane().setLayout(null);
            label1.setBounds(new Rectangle(78, 60, 105, 31));
            label2.setBounds(new Rectangle(80, 146, 87, 32));
            textField1.setBounds(new Rectangle(185, 59, 152, 28));
            textField2.setBounds(new Rectangle(187, 143, 151, 30));
            button1.addActionListener(this);
            button2.addActionListener(this);
            button3.addActionListener(this);
            button4.addActionListener(this);
    //        button.addActionListener(this);
            textField.setEnabled(false);
            textField.setBounds(new Rectangle(189, 196, 150, 30));
            label3.setBounds(new Rectangle(81, 196, 10745, 26));
            button1.setBounds(new Rectangle(113, 111, 44, 23));
            button2.setBounds(new Rectangle(176, 112, 48, 23));
            button3.setBounds(new Rectangle(235, 112, 43, 23));
            button4.setBounds(new Rectangle(295, 110, 38, 24));
    //        button.setBounds(new Rectangle(154, 248, 129, 34));
            this.getContentPane().add(label1);
            this.getContentPane().add(label3);
            this.getContentPane().add(textField);
            this.getContentPane().add(label2);
            this.getContentPane().add(textField2);
            this.getContentPane().add(textField1);
            this.getContentPane().add(button1);
            this.getContentPane().add(button2);
            this.getContentPane().add(button3);
            this.getContentPane().add(button4);
    //        this.getContentPane().add(button);
            this.setTitle("简易计算器");
            this.setVisible(true);
            this.setSize(450, 350);
        }
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            //获取数据
         String d1 = textField1.getText();
         String d2 = textField2.getText();
            String op = " " ;  //运算符号
            if (e.getActionCommand().equals("+")) {
                op = button1.getText();
            } else if (e.getActionCommand().equals("-")) {
                op = button2.getText();
            } else if (e.getActionCommand().equals("*")) {
                op = button3.getText();
            } else if (e.getActionCommand().equals("/")) {
                op = button4.getText();
            }
            //将数据转换为double类型进行计算
            double data1 = Double.parseDouble(d1);
            double data2 = Double.parseDouble(d2);
            Calculate calculate = new Calculate();
            double result = calculate.cal(data1, data2, op);
            textField.setText(String.valueOf(result));
        }
        public static void main(String[] args) {
            new test7();
        }
    }
    
    

    实验结果:
    在这里插入图片描述
    实验总结:

    e.getActionCommand().equals("文本")
    

    此函数可以去查看按钮是否被点击

    button(按钮定义名称).getText()
    

    此函数可以获取按钮上的文本

    还有等等十分好用的函数可以满足像 提取选项文本之类的方便函数,需要经常学习,这里我就等用到的时候在谈吧

    展开全文
  • 解决Java图形界面中向MySQL数据中添加中文字符变成了???的问题 准备结课报告中出现这样的问题, 解决方法: 原来的连接数据库的语句添加上?useUnicode=true&characterEncoding=utf-8 如下: #jdbc:mysql...
  • ## # 如何在java swing 图形界面中显示数据控库的信息?
  • java图形界面设计

    2017-02-06 21:11:00
    Java图形界面的类主要包括AWT和Swing。AWT图形元素的父类为Component。 继承关系如下:Component->Container->Window->Frame->JFrame。(注意:Swing对AWT进行了扩展)。 下面给出一个简单的...
  • java图形界面源码Java调试器 JSwat 是一个图形化的 Java 调试器前端,它使用 Java 平台调试器架构并基于 NetBeans 平台而编写。 它的特点包括复杂的断点; 带有代码导航器的彩色源代码显示; 显示线程、调用堆栈、...
  • Java图形界面设计完成后,就可以进行事件监听处理啦,这里简单的实现单选按钮以及按钮的响应事件。 (1)单选按钮的监听,方法一,自定义内部类 //声明 JRadioButton r1; //实例化内部类对象 private ...
  • 排序 java 图形界面

    2011-12-04 11:18:57
    编写图形界面程序,接受用户输入的5个浮点数据和一个文件目录名,将这5个数据保存该文件,再从文件读取出来并且进行从大到小排序,然后再一次保存该文件
  • 标题IDEA上运行JAVA图形界面,出现中文乱码 解决方法 VM options 添加下面这句即可 -Dfile.encoding=gbk 重启测试
  • Java图形界面编程

    2018-02-04 16:10:58
    java API 提供了两套组件用于支持编写图形用户界面,包括AWT和Swing。Swing API使用了大量AWT类和接口。 Swing包含容器和组件两种基本元素,其中,容器又分为重量级容器和轻量级容器。组件放置容器。 轻量级...
  • java图形界面开发插件

    2017-11-14 19:45:00
    java图形界面开发工具  最近想用java开发一个仿pc版TIM的界面,发现自己编写代码来设置布局太麻烦了,就网上找了一些java swing开发的插件 这是网址...
  • 第一:你的具有main函数的类也即你应用运行的主类上点击右键,选择Run As的Run Configurations,如下图:java,awt,中文方框,中文乱码第二,Arguments标签下的VM arguments添加下面这行参数代码,然后点击...
  • JAVA图形界面:加法计算器

    千次阅读 多人点赞 2020-10-19 20:21:25
    JAVA用于开发图形界面应用的 SWING 组件包功能强大,使用方便。接下来我们就使用其写一个简单的图形界面小程序:加法计算器。 第一步: 首先得构思,我们要做什么。加法计算器的话,做出来之后大概是这个样子的。 ...
  • Java图形界面知识点总结 1. java图形常用的控件 常用窗体:JFrame、JDialog。窗体好比一块空白的画布,你可以任意添加按钮等组件到其中,也可以设置窗体的属性(大小、边界、排布等)。JFrame是一个主窗体,一个...
  • 与C的win32一样,JAVA也有自己的图形界面开发,将此篇博客对基础部分进行讲解。 1.Java提供的图形界面类有哪些?  Java提供了两套图形界面  (1)AWT组建(基础)  AWT组件是jdk1.0的时候推出的图形界面...
  • 1 package Test;... 2 import java.awt.EventQueue; 3 import java.awt.event.WindowAdapter; 4 import java.awt.event.WindowEvent; 5 import javax.swing.JFrame; 6 import javax.swing.JScrollPan...
  • class pictureShow{ JFrame fr1,fr2; JLabel pictureLabel1,pictureLabel2; JPanel pan1,pan2; pictureShow(){ } public void Show1() { fr1=ne...
  • Java图形界面设计基础

    千次阅读 2018-07-30 10:10:48
    现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单、按钮等,用户通过鼠标选择菜单中的选项和点击按钮,命令程序功能模块。本章学习如何用Java语言编写GUI科学试验,如何通过GUI实现输入和...
  • 要将按钮图形化,只需创建一个ImageIcon对象,将图形路径赋予ImageIcon对象,然后将该对象传递给按钮即可。 此处涉及eclipse中图形的路径设置,包括(项目路径下、非项目路径下、相对...以picture1.jpg(H:/java...
  • JAVA图形界面重绘

    千次阅读 2019-02-16 14:38:18
    编写图形界面程序的过程我们会发现,一旦将窗体拉伸(或最大化最小化),之前我们窗体上绘制的图形就消失了,这是为什呢?原来,窗体包括其他组件都是计算机绘制出来的,我们一旦使窗体改变,之前的一切就需要...
  • java图形界面编程换皮肤

    千次阅读 2018-09-05 22:36:27
    总所周知,java图形界面效果不是特别理想,于是网上找了一些非常好看的皮肤 皮肤地址:皮肤地址 使用 下载了一款名为weblaf的皮肤,使用也很简单,导入jar包后,main方法,JFrame定义之前调用install();...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,444
精华内容 1,377
关键字:

在java图形界面中

java 订阅