學過java的人應該對java的圖形化界面非常反感,特別是接觸java不久的人。若是想和其餘語言那樣用鼠標拖拽,可使用wondosbulider插件。可是用起來也不是那麼方便。固然對於不樂意寫代碼的人來講真是太幸福了。java
然而用代碼去實現java的圖形化界面並不是那麼麻煩。總結起來就是~ide
1.定義你須要使用的面板,按鈕,文本,標籤。佈局
2.對這些實例化。 而後把按鈕,文本,標籤按照你想要的方法放到面板上。測試
3.把面板放在界面上。 若是界面簡單的話,面板也是能夠不使用的,面板能夠方便管理一些按鈕。this
如何去簡單的添加一些按鈕那?spa
定義面板按鈕~實例化面板按鈕~將按鈕添加到面板上。插件
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); } }
下面介紹幾個佈局,讓你的界面更加美觀code
流佈局~組建從左到右依次安排到面板上。也是默認佈局orm
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); } }
執行結果blog
邊界佈局~有五個位置,東南西北中~默認爲中
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); } }
是否會本身按裝一些組件了那?複選框的添加步驟也是同樣的,可是要注意多設置些面板,用以管理各個複選框的標籤等。