zoukankan      html  css  js  c++  java
  • java Swing图形化界面

      学过java的人应该对java的图形化界面很是反感,特别是接触java不久的人。如果想和其他语言那样用鼠标拖拽,可以使用wondosbulider插件。但是用起来也不是那么方便。当然对于不乐意写代码的人来说真是太幸福了。

      然而用代码去实现java的图形化界面并非那么麻烦。总结起来就是~

    1.定义你需要使用的面板,按钮,文本,标签。

    2.对这些实例化。  然后把按钮,文本,标签按照你想要的方法放到面板上。

    3.把面板放在界面上。  如果界面简单的话,面板也是可以不使用的,面板可以方便管理一些按钮。

    如何去简单的添加一些按钮那?

    定义面板按钮~实例化面板按钮~将按钮添加到面板上。

    package Swing;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class FrameDemo extends JFrame {
        private JPanel jp,jp1;    //声明面板,面板功能:可添加按钮文本等,方便管理界面。
        private  JButton b1;   //声明 按钮
        private JButton b2,b3;    
        public FrameDemo  ()
        {
            super("测试窗口");
            jp = new JPanel();  
            b1 = new JButton("按钮1");
            b2 = new JButton("按钮2");//实例化 jp b1 b2 
            jp.add(b1);   
            jp.add(b2);
        
            
            this.add(jp);   //按钮添加到面板,面板添加到界面。
            this.setSize(300,200);   //设定 窗口宽度300,高度200
            this.setLocation(100,100);  //设定窗口左上角坐标,窗口打开时的位置。以左上定点为0.0
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
             FrameDemo frame = new FrameDemo();
             frame.setVisible(true);
                  
        }
    
    }

        下面介绍几个布局,让你的界面更加美观

    流布局~组建从左到右依次安排到面板上。也是默认布局

    package Swing;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class FrameDemo extends JFrame {
        private JPanel jp;    //声明面板,面板功能:可添加按钮文本等,方便管理界面。
        private  JButton b1;   //声明 按钮
        private JButton b2,b3,b4;    
        public FrameDemo  ()
        {
            super("测试窗口");
            jp = new JPanel(); //  先对面板实例化,再对面板进行布局。      (左对齐,水平间距10,垂直间距15)可更改。
            FlowLayout layout = new FlowLayout(FlowLayout.LEFT,10,25);
            jp.setLayout(layout);
             
            b1 = new JButton("按钮1");
            b2 = new JButton("按钮2");
            b3 = new JButton("按钮3");
            b4 = new JButton("按钮4");
            jp.add(b1);   
            jp.add(b2);
            jp.add(b3);
            jp.add(b4);
            this.add(jp);   //按钮添加到面板,面板添加到界面
            this.setSize(300,200);   //设定 窗口宽度300,高度200
            this.setLocation(100,100);  //设定窗口左上角坐标,窗口打开时的位置。
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
             FrameDemo frame = new FrameDemo();
             frame.setVisible(true);
                  
        }
    
    }

    执行结果

    边界布局~有五个位置,东南西北中~默认为中

    package Swing;
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class FrameDemo extends JFrame {
        private JPanel jp;    //声明面板,面板功能:可添加按钮文本等,方便管理界面。
        private  JButton b1;   //声明 按钮
        private JButton b2,b3,b4;    
        public FrameDemo  ()
        {
            super("测试窗口");
            jp = new JPanel(); //  先对面板实例化,再对面板进行布局。      (左对齐,水平间距10,垂直间距15)可更改。
            jp.setLayout(new BorderLayout());
             
            b1 = new JButton("按钮1");
            b2 = new JButton("按钮2");//实例化 jp b1 b2 
            b3 = new JButton("按钮3");
            b4 = new JButton("按钮4");
            jp.add(b1,BorderLayout.WEST);   
            jp.add(b2,BorderLayout.WEST);    //按钮2将按钮1覆盖, 未设置按钮大小,按钮会的长度会是面板的长度。
            jp.add(b3,BorderLayout.NORTH);
            jp.add(b4,BorderLayout.SOUTH);
            this.add(jp);   //按钮添加到面板,面板添加到界面
            this.setSize(500,500);   //设定 窗口宽度500,高度500
            this.setLocation(100,100);  //设定窗口左上角坐标,窗口打开时的位置。
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
             FrameDemo frame = new FrameDemo();
             frame.setVisible(true);
                  
        }
    
    }

    注意,按钮1被按钮2覆盖

    网格布局以及卡片布局都是一样的设置步骤,唯一改变的是布局方式改变。只要依次添加组件,注意个组件的位置就可以做好自己要求的界面。

    我最喜欢的布局~null空布局。根据自己的意愿在面板上随意添加,但是容易造成布局混乱。我将文本框,标签,和按钮放在null布局中,标签和文本框的放置方法和按钮相同。

    package Swing;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    
    import javax.swing.JButton;
    import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    
    public class FrameDemo extends JFrame {
        private JPanel jp;    //声明面板,面板功能:可添加按钮文本等,方便管理界面。
        private  JButton b1;   //声明 按钮
        private JButton b2,b3,b4;    
        private  JLabel lname ,lpwd;
        private JTextField txtname;
        private JPasswordField txtpwd;
         public FrameDemo  ()
        {
            super("测试窗口");
            jp = new JPanel();     
            jp.setLayout(null);         
            b1 = new JButton("登陆");    //对按钮创建添加
            b2 = new JButton("取消");
    
            b1.setBounds(60, 90, 60, 25);
            b2.setBounds(125, 90, 60, 25);  
            jp.add(b1);   
            jp.add(b2);
    
            lname = new JLabel("用户名");    // 对标签创建添加
            lpwd = new JLabel("密码");
            txtname = new JTextField(20);
            txtpwd = new JPasswordField(20);
            txtpwd.setEchoChar('*');
            
            lname.setBounds(30,30,60,25);
            txtname.setBounds(95, 30, 120, 25);
            lpwd.setBounds(30,60,60,25);
            txtpwd.setBounds(95,60,120,25);
            
            jp.add(lname);
            jp.add(txtname);
            jp.add(lpwd);
            jp.add(txtpwd);
            
            this.add(jp);   //按钮添加到面板,面板添加到界'
            this.setSize(250,170);   
            this.setLocation(300,300);  //设定窗口左上角坐标,窗口打开时的位置。
            this.setResizable(false);//窗口不可改变大小
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
             FrameDemo frame = new FrameDemo();
             frame.setVisible(true);
                  
        }
    
    }

    是否会自己按装一些组件了那?复选框的添加步骤也是一样的,但是要注意多设置些面板,用以管理各个复选框的标签等。

  • 相关阅读:
    详解TCP三次握手
    Linux(Ubunt)使用日记------常用软件汇总(不定时更新)
    Linux(Ubuntu)使用日记------markdown文件与pdf,doc,docx文件的相互转化(pandoc使用)
    白板编程浅谈——Why, What, How
    深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
    我的算法学习之路
    redux的hook使用
    redux基础(添加中间件与异步)
    typescript书写规范
    用js手撕七种排序算法!!内附运行速度测试函数
  • 原文地址:https://www.cnblogs.com/yuhanghzsd/p/4421858.html
Copyright © 2011-2022 走看看