java網格佈局(GridLayout)應用
阿新 • • 發佈:2019-01-29
我們先分析一下:
用BorderLayout顯然是不合適的,賬號和密碼佔據的位置差不多。我們觀察一下,發現這三行寬度基本一致。
由此我們可以考慮用網格佈局(GridLayout),分為3行1列,每行裝一個JPanel。JPanel預設為FlowLayout
佈局,由此可以把資訊和框分別裝進JPanel。
亮程式碼:
/** * @ Author_張斌 * Layout演示 * * 1.定義元件 * 2.建立元件(建構函式) * 3.新增元件 * 4.對窗體進行設定 * 5.顯示視窗 */ import javax.swing.*; import javax.xml.stream.Location; import java.awt.*; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.InputStreamReader; public class Tests extends JFrame{ //定義元件 JPanel jp1,jp2,jp3; JPasswordField jpw; JLabel jl1,jl2; JTextField jtf; JButton jb1,jb2; public static void main(String[] args){ Tests tests = new Tests(); } public Tests(){ //建立元件 jp1 = new JPanel(); jp2 = new JPanel(); jp3 = new JPanel(); jtf = new JTextField(10); jpw = new JPasswordField(10); jl1 = new JLabel("賬號"); jl2 = new JLabel("密碼"); jb1 = new JButton("登入"); jb2 = new JButton("退出"); //新增元件 jp1.add(jl1); jp1.add(jtf); jp2.add(jl2); jp2.add(jpw); jp3.add(jb1); jp3.add(jb2); //新增JPanel this.add(jp1); this.add(jp2); this.add(jp3); //添加布局管理器 this.setLayout(new GridLayout(3,1)); //設定窗體 this.setTitle("使用者登入"); this.setSize(300,150); this.setLocation(200,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //禁止使用者改變窗體大小 this.setResizable(false); //顯示窗體 this.setVisible(true); } }