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