精华内容
下载资源
问答
  • 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口) 是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比, 图形界面对于用户来说更为简便易用。然而这界面若要通过...

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)

    是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,

    图形界面对于用户来说更为简便易用。然而这界面若要通过在显示器的特定位置,

    以“各种美观、而不单调的视觉消息”提示使用者“状态的改变”,势必得比简单的文本消息体现,

    花上更多的计算能力,计算“要改变显示器哪些光点,变成哪些颜色”。

    Java写GUI比较麻烦,而且不容易写得比较好看。如果要写的好看的话,布局很麻烦。
    常见的库有awt,swing,swt等。现在有不错的可视化编辑器,但感觉还是不是很好用。

    展开全文
  • Java GUI编程

    2016-05-15 14:47:00
    为什么80%的码农都做不了架构师?>>> ...

    ##AWT

    ###awt(abstract window toolkit)

    • 包括了很多类和接口,用于java application的GUI编程
    • GUI的各种元素(如:窗口,按钮,文本框等)由java类来实现
    • 使用awt所涉及的类一般在java.awt包及其子包中
    • Container和Component是awt中的两个核心类

    ###Frame

    frame是window的子类,由Frame或其子类创建的对象为一个窗体。

    Frame的常用构造方法 Frame() Frame(String s) 创建标题栏为字符串s的窗口

    setBounds(int x,int y,int width,int height); 设置窗体位置和大小,x,y是左上角坐标

    setSize(int width,int height); 设置窗体的位置,x,yshirt左上角坐标

    setLocation(int x,int y) 设置窗体的大小,width和height分别是宽度和高度

    setViseble(boolean b) 设置是否可见

    setTitle(String name) String getTitle()

    setResizable(boolean b) 设置是否可以调整大小

    ##java窗口的事件

    void windowActivated(WindowEvent e) 将 Window 设置为活动 Window 时调用。

    void windowClosed(WindowEvent e) 因对窗口调用 dispose 而将其关闭时调用。

    void windowClosing(WindowEvent e) 用户试图从窗口的系统菜单中关闭窗口时调用。

    void windowDeactivated(WindowEvent e) 当 Window 不再是活动 Window 时调用。

    void windowDeiconified(WindowEvent e) 窗口从最小化状态变为正常状态时调用。

    void windowIconified(WindowEvent e) 窗口从正常状态变为最小化状态时调用。

    void windowOpened(WindowEvent e) 窗口首次变为可见时调用。

    ##TextArea

    setEditable(false); //只读属性

    ##匿名类关闭java窗口

    import java.awt.*;
    import java.awt.event.*;
    
    public class FrameClose
    {
    	public static void main(String []args){
    		new MyFrame("可以关闭窗口了!");
    	}
    
    }
    class MyFrame extends Frame
    {
    	public MyFrame(String s){
    		super(s);
    		setLayout(null);
    		setBounds(300,300,400,300);
    		this.setBackground(new Color(204,204,255));
    		setVisible(true);
    		/*
    		//用内部类实现
    		this.addWindowListener(new MyWindowMonitor());
    		*/
    		//用局部类,即匿名类实现
    		this.addWindowListener(new WindowAdapter(){
    			public void windowClosing(WindowEvent e){
    				javax.swing.JOptionPane.showMessageDialog(null,"您把我关闭了!","提示",0);
    				System.exit(0);
    			}
    		});
    
    	}
    
    	//内部类实现
    	class MyWindowMonitor extends WindowAdapter
    	{
    		public void windowClosing(WindowEvent e)
    		{
    			setVisible(false);
    			System.exit(0);
    		}
    	}
    }
    

    ##文本框TextFiedld

    • TextField文本框输入
    • setEchoChar('');设置显示的内容为,即为*来屏蔽输入的内容

    代码示例:

    
    import java.awt.*;
    import java.awt.event.*;
    
    public class TextFieldTest{
    	public static void main(String[]args){
    		new TFFrame();	
    	}	
    }
    class TFFrame extends Frame{
    	public TFFrame(){
    		TextField tf=new TextField();
    		add(tf);
    		tf.addActionListener(new Monitor());
    		tf.setEchoChar('*');
    		pack();
    		setVisible(true);
    	}	
    }
    class Monitor implements ActionListener {
    	public void actionPerformed(ActionEvent e){
    		TextField tf=(TextField)e.getSource();
    		System.out.println(tf.getText());	
    	}	
    }
    

    ##事件

    • 使用java.awt.event.*;包的内容
    • 添加事件/绑定事件:addActionListener(//实现ActionListener接口的类的对象);
    • 实现ActionListener接口的public void actionPerformed(ActionEvent e){}方法

    代码示例:

    import java.awt.*;
    
    public class EventTest{
    	public static void main(String[]args){
    		Frame f=new Frame("事件练习!");
    		f.setBounds(500,500,500,500);
    		f.setLayout(new FlowLayout());
    		
    		//添加文本框
    		TextArea t=new TextArea();
    		t.setBounds(100,100,300,100);
    		t.setVisible(true);		
    		f.add(t);
    		//添加按钮
    		Button b=new Button("Press Me!");
    		MyEvent e=new MyEvent(t);
    		
    		b.addActionListener(e);
    		
    		f.add(b);
    		f.setVisible(true);	
    	}
    } 
    
    //事件
    class MyEvent implements java.awt.event.ActionListener{
    	private TextArea t;
    	public MyEvent(){}
    	public MyEvent(TextArea t){
    		this.t=t;	
    	}
    	public void actionPerformed(java.awt.event.ActionEvent e){
    		t.setText(t.getText()+"\n你点击了我,我痛啊!");
    		System.out.println("你点击了我!");	
    	}	
    }
    

    ##如何区分同一事件的绑定

    • 加入两个button同时绑定了一个监听器,那么我们怎么区分它们?

    代码示例:

    import java.awt.*;
    import java.awt.event.*;
    
    public class MyFirstEventTest{
    	public static void main(String[]args){
    		Frame f=new Frame("事件练习");
    		f.setBounds(500,500,500,500);
    		//添加button
    		Button b1=new Button("上一步");
    		Button b2=new Button("下一步");
    		//添加TextArea
    		TextArea t=new TextArea();
    		t.setBounds(100,100,200,200);
    		f.add(t);
    		Monitor m=new Monitor(t);
    		b1.setActionCommand("Back!");
    		b2.setActionCommand("Next!");
    		b1.addActionListener(m);
    		b2.addActionListener(m);
    		f.add(b1);
    		f.add(b2);
    		f.setLayout(new FlowLayout());
    		f.setVisible(true);		
    	}	
    }
    class Monitor implements ActionListener{
    	private TextArea t;
    	public Monitor(TextArea t){
    		this.t=t;
    	}
    	public void actionPerformed(ActionEvent e){
    		t.setText(t.getText()+"\t"+e.getActionCommand()+"\n");
    	}	
    }
    

    ##如何关闭java显示的窗口

    • 调用并添加addWindowListener()方法!
    • 实现WindowAdapter的windowClosing方法

    代码示例:

    import java.awt.*;
    import java.awt.event.*;
    
    public class FrameClose
    {
    	public static void main(String []args){
    		new MyFrame("可以关闭窗口了!");
    	}
    
    }
    class MyFrame extends Frame
    {
    	public MyFrame(String s){
    		super(s);
    		setLayout(null);
    		setBounds(300,300,400,300);
    		this.setBackground(new Color(204,204,255));
    		setVisible(true);
    		this.addWindowListener(new MyWindowMonitor());
    
    	}
    	class MyWindowMonitor extends WindowAdapter
    	{
    		public void windowClosing(WindowEvent e)
    		{
    			setVisible(false);
    			System.exit(0);
    		}
    	}
    }
    

    转载于:https://my.oschina.net/csmw00/blog/675343

    展开全文
  • Java GUI学习心得

    2017-09-03 22:39:00
    虽然GUI的应用已经不是特别广泛了,但是如果了解一点,可以些自己想要的工具,最近了一个工具(是什么提了),当然碰到很多的问题,都一一解决了,现在分享出来。 1.关于窗体面板的显示问题 可能会遇到...

            虽然GUI的应用已经不是特别广泛了,但是如果了解一点,可以做些自己想要的工具,最近做了一个工具(是什么就不提了),当然碰到很多的问题,都一一解决了,现在分享出来。

            1.关于窗体面板的显示问题

             可能会遇到这样的情况,就是窗体不显示面板上的组件,但是鼠标稍微拖缀下窗体,就显示了,为什么?

              可以把面板的加载放在最后,即可,为什么,我也没搞清楚。如下:

              jf.setContentPane(pe);
              jf.setVisible(true);

           2.label组件是支持html的,所以可以有如下的语法:

             JLabel label2 = new JLabel("<html><font size=5 face='Lucida calligraphy' color='0099ff'>"
                                     + "Let life be beautiful like summer flowers ,and death like autumn leaves "+ "</font></html>");

           3.其实窗体的菜单也是有监听事件的,MenuListener,具体用法如其他监听事件一样。

           4.比较耗费事件的任务可以使用SwingWorker来达到多线程的目的,如我在任务间歇需要更新进度条,这样主类可以继承Thread,耗时任务放在SwingWorker类实现即可。

           5.GUI播放音乐

            简单的可以用下面实现

               AudioClip clip=null;

                 try {

                clip = Applet.newAudioClip(new File(checkedMusic)

                        .toURI().toURL());
                clip.play();
                } catch (Exception ee) {
                  ee.printStackTrace();
             }

           但是要注意的是,java支持的格式不是特别多,比如wav,需要专门将歌曲转为wav,不是将后缀简单的改为wav,可以使用酷狗的格式转换工具,需要下载无损音乐(有些高品质也行),转为wav即可。

     

    转载于:https://www.cnblogs.com/liyunzhouts/p/7471490.html

    展开全文
  • 前言这个也是Java实验课程的一个作业,和Java实现简单的图形界面计算器一起的,因为以前没有GUI编程,所以的非常简陋,还有很多BUG,但是感觉当个作业也够了。程序功能和截图这里的添加是直接添加到文件中,...

    00f071d3ed6b34a25d9235b0951edc1a.png

    前言

    这个也是Java实验课程的一个作业,和Java实现简单的图形界面计算器一起做的,因为以前没有做过GUI编程,所以做的非常简陋,还有很多BUG,但是感觉当个作业也够了。

    程序功能和截图

    b167b3126abdc4c413e305d4f7a54ff3.png

    这里的添加是直接添加到文件中,为什么不用数据库呢?因为我们老师根本就没教,所以也不能用.。

    e4b2c5a0aa0593019c9e1a1513c21652.png

    通过输入的名字在文件中查找是否有该用户,如果用,就显示到界面上。

    a7d279fcb34b8107a937164ea0c44368.png

    大致的功能就是上面两个。

    代码

    一、文件读写工具

    package Contacts;
    
    import java.io.*;
    
    /**
     * Created by Yifan Jia on 2018/6/10.
     */
    public class FileRW {
        private static FileWriter fileWriter;
    
        private static FileReader fileReader;
    
        private static BufferedReader bf;
    
        private static BufferedWriter bw;
    
        private static File file = new File("D:dest.txt");
        public static void fileWrite(String s) {
            try {
                fileWriter = new FileWriter(file, true);
                bw = new BufferedWriter(fileWriter);
                bw.write(s);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    bw.close();
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static String fileRead(String dest) {
            try {
                fileReader = new FileReader(file);
                bf = new BufferedReader(fileReader);
                String ss;
                while((ss = bf.readLine()) != null) {
                    String[] temp = ss.split(",");
                    if(temp[0].equals(dest)) {
                        return ss;
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    bf.close();
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    }
    

    二、界面程序

    package Contacts;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    //定义自已的MyPanel,用于实现画图
    class MyPanelone extends JPanel {
        private String ss;
        private int x;
        private int y;
        private int size;
    
        public MyPanelone(String ss, int x, int y, int size) {
            this.ss = ss;
            this.x = x;
            this.y = y;
            this.size = size;
        }
    
        //覆盖JPanel的paint方法
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            g.setColor(Color.BLACK);
            g.setFont(new Font("宋体", Font.BOLD, size));
            g.drawString(ss, x, y);
        }
    }
    
    public class MyContacts extends JFrame{
        private MyPanelone myPaneone;
        private JPanel[] jPanels = new JPanel[7];
        private JButton[] jButtons = new JButton[4];
        private JTextField[] jTextFields = new JTextField[6];
        private JLabel[] jLabels = new JLabel[6];
        private String[] texts = new String[6];
    
        private class MyActionListener implements ActionListener {
    
            @Override
            public void actionPerformed(ActionEvent e) {
                boolean flag = true;
                StringBuilder s = new StringBuilder();
                String actionCommand = e.getActionCommand();
                if(actionCommand == "添加") {
                    for (int i = 0; i < 6; i++) {
                        texts[i] = new String();
                        texts[i] = jTextFields[i].getText();
                        //System.out.println(texts[i]);
                        if(texts[i].equals("") || texts[i] == null) {
                            flag = false;
                            break;
                        }
                        if(i == 0) {
                            s.append(texts[i]);
                        }
                        else {
                            s.append(",").append(texts[i]);
                        }
                    }
                    if(flag) {
                        s.append("n");
                        //将文本域中的内容写成一个字符串
                        String ss = s.toString();
                        //将字符串写入文件
                        FileRW.fileWrite(ss);
                        for(int i=0;i<6;i++) {
                            jTextFields[i].setText("");
                        }
                        //System.out.println(ss);
                        JFrame jFrame = new JFrame();
                        jFrame.setBounds(500, 300, 300, 300);
                        MyPanelone myPanelone = new MyPanelone("添加成功", 100, 100, 20);
                        jFrame.add(myPanelone);
                        jFrame.addWindowListener(new WindowAdapter() {
                            @Override
                            public void windowClosing(WindowEvent e) {
                                e.getWindow().dispose();
                            }
                        });
                        jFrame.setVisible(true);
                    }
                    else {
                        JFrame jFrame = new JFrame();
                        jFrame.setBounds(500, 300, 300, 300);
                        MyPanelone myPanelone = new MyPanelone("请把所有内容都填写完整", 60, 100, 15);
                        jFrame.add(myPanelone);
                        jFrame.addWindowListener(new WindowAdapter() {
                            @Override
                            public void windowClosing(WindowEvent e) {
                                e.getWindow().dispose();
                            }
                        });
                        jFrame.setVisible(true);
                    }
    
    
                }
                else if(actionCommand == "清空") {
                    for(int i=0;i<6;i++) {
                        jTextFields[i].setText("");
                    }
                }
                else if(actionCommand == "退出") {
                    System.exit(0);
                }
                else if(actionCommand == "查找") {
                    JFrame frame = new JFrame("输入");
    
                    JPanel jPanel = new JPanel();
                    JPanel jPanel1 = new JPanel();
                    JLabel jLabel = new JLabel("输入查找人的名字");
                    JButton jButton = new JButton("确定");
                    JTextField jTextField = new JTextField(30);
                    jPanel.add(jLabel);
                    jPanel.add(jTextField);
                    jButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            String actionCommand1 = e.getActionCommand();
                            String dest = jTextField.getText();
                            String findresult = FileRW.fileRead(dest);
                            if(findresult == null) {
                                for(int i=0;i<6;i++) {
                                    jTextFields[i].setText("");
                                }
                                JFrame jFrame = new JFrame();
                                jFrame.setBounds(500, 300, 300, 300);
                                MyPanelone myPanelone = new MyPanelone("未找到该用户", 100, 100, 20);
                                jFrame.add(myPanelone);
                                jFrame.addWindowListener(new WindowAdapter() {
                                    @Override
                                    public void windowClosing(WindowEvent e) {
                                        e.getWindow().dispose();
                                    }
                                });
                                jFrame.setVisible(true);
                                frame.dispose();
                            }
                            else {
                                String[] tempdest = findresult.split(",");
                                for(int i=0;i<6;i++) {
                                    jTextFields[i].setText(tempdest[i]);
                                }
                                frame.dispose();
                            }
    
                        }
                    });
                    jPanel1.add(jButton);
                    frame.add(jPanel, BorderLayout.CENTER);
                    frame.add(jPanel1, BorderLayout.SOUTH);
                    frame.setBounds(500, 300, 400, 300);
                    frame.addWindowListener(new WindowAdapter() {
                        @Override
                        public void windowClosing(WindowEvent e) {
                            e.getWindow().dispose();
                        }
                    });
                    frame.setVisible(true);
                }
            }
        }
    
        MyContacts() {
            myPaneone = new MyPanelone("communication", 250, 60, 60);
            //myPaneone.setSize(1000, 150);
            this.add(myPaneone);
            for(int i=0;i<7;i++) {
                jPanels[i] = new JPanel();
            }
    
            jLabels[0] = new JLabel("姓名");
            jLabels[1] = new JLabel("邮政编码");
            jLabels[2] = new JLabel("通信地址");
            jLabels[3] = new JLabel("电话");
            jLabels[4] = new JLabel("手机");
            jLabels[5] = new JLabel("电子邮件");
    
            jButtons[0] = new JButton("添加");
            jButtons[1] = new JButton("查找");
            jButtons[2] = new JButton("清空");
            jButtons[3] = new JButton("退出");
    
            for(int i=0;i<6;i++) {
                jTextFields[i] = new JTextField(50);
            }
    
            //设置布局管理
            this.setLayout(new GridLayout(8, 1));
    
            //加入各个组件
            for(int i=0;i<6;i++) {
                jPanels[i].add(jLabels[i]);
                jPanels[i].add(jTextFields[i]);
                this.add(jPanels[i]);
            }
            for(int i=0;i<4;i++) {
                jButtons[i].addActionListener(new MyActionListener());
                jPanels[6].add(jButtons[i]);
            }
            this.add(jPanels[6]);
        }
    
    
    
        public static void main(String[] args) {
            JFrame f = new MyContacts();
            f.setTitle(f.getClass().getSimpleName());
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setBounds(400, 200, 1000, 600);
            f.setVisible(true);
        }
    }
    展开全文
  • 在用java做GUI编程时,同时给一个Frame挂下拉式菜单和popUpMenu,结果能同时显示,为什么
  • JAVA GUI 开发---全屏

    2010-08-22 19:21:00
    为什么80%的码农都做不了架构师?>>> ...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 我在搞Go桌面GUI这方面,简单解释下,Go搞桌面跨平台软件有几个问题:一、跨平台GUI本身就不好,目前成熟可用的系统级跨平台GUI框架其实并多,Native与系统原生组件关联的的其实只有Qt、Gtk、wxWidgets,其他...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 为什么80%的码农都做不了架构师?>>> ...
  • java内部类内部类学习所谓内部类(Inner Class),顾名思义,就是指定义在另外一个类中的类,我们为什么要这么呢?为什么不直接定义它而要在别的类中定义一个内部类呢?这样主要有如下三个原因:1. 内部类的方法可以...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 好程序员Java教程解读什么是swing,swing是java GUI应用程序,也就是java做的桌面应用。运行swing程序要求用户电脑上有java环境,这一点太现实也方便。现在的java主要以web方向主,移动应用和网站开发,...
  • 之前我发了一篇文章讲述跨平台的GUI...现在最新的java教材,在讲到GUI技术的时候,还是以swing和awt主。swing和awt是上一代的Java GUI技术,现在很多银行、国企的嵌入式设备还跑着swing和awt写出来的程序。javafx...
  • swing是java GUI应用程序,也就是java做的桌面应用。运行swing程序要求用户电脑上有java环境,这一点太现实也方便。现在的java主要以web方向主,移动应用和网站开发,分布式、多线程、高并发等都是java...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 如果想打包后的安装包logo为Java的灰色的茶杯,需要在pom文件里将对应操作系统平台的图标注释放开 #<icon>${project.basedir}/package/windows/mybatis-generator-gui.ico</icon>windows #<icon&...
  • Swing为什么不受重视

    2009-04-25 20:25:27
    我想在JavaEye发表一些Swing的技术文章,都不知道发布到哪个板里去,JavaEye好像完全无视Java GUI的存在,连一个专门的板块都没有。 我觉得Swing还是非常值得学习和应用的,比如我现在的工作,就是... Java不只是...
  • 为什么现在常用了? 因为界面美观 需要jre环境(消耗内存) 为什么我们要学习? 可以写出自己心中想要的一些小工具 工作时候,也可能需要维护到Swing界面,概率极小 了解MVC架构,了解监听! 2. AWT #### 2.1 ...
  • 该项目JavaSe项目,用Java GUI的(JFrame,JPane等) 因为该项目没有用到框架,没有jar包,用了原生的jdbc,所以项目较小。 想改少点积分下载,但编辑时积分能更改。但是也没什么,自认为该项目的很好,...
  • 前言这个也是Java实验课程的一个作业,和Java实现简单的图形界面计算器一起的,因为以前没有GUI编程,所以的非常简陋,还有很多BUG,但是感觉当个作业也够了。程序功能和截图这里的添加是直接添加到文件中,...
  • Java实现简易的界面通讯录

    万次阅读 多人点赞 2018-06-11 09:53:30
    这个也是Java实验课程的一个作业,和Java实现简单的图形界面计算器一起的,因为以前没有GUI编程,所以的非常简陋,还有很多BUG,但是感觉当个作业也够了。 程序功能和截图 这里的添加是直接添加到文件中...
  • 1.2 为什么需要Jocky? 目前业界有不少商业的甚或是开源的混淆编译器,但它们普遍存在一些这样或者那样的问题。一般而言,现有的混淆器都是对编译好的 class文件进行混淆,这样就需要编译和混淆两个步骤。而事实上,...

空空如也

空空如也

1 2 3 4 5
收藏数 87
精华内容 34
关键字:

为什么java不做gui

java 订阅