BorderLayout布局,修改各個區域大小辦法


摘自http://blog.csdn.net/zcsearching/article/details/50808446

 

BorderLayout控件大小的設置

 

使用BorderLayout時,中間的面板會隨着窗體的變化而變化,其他區域的大小根據添加組件多少而變化。舉個例子,現在想將一個面板固定到上邊,高度為固定值,這是我們需要設置面板的高度。但是調用面板的 setSize()方法根本沒有效果。調用 setMaximumSize()setMinimumSize()都沒有用。

最后才發現應該調用的是 setPreferredSize()才能達到效果。

 

請看栗子。

 

 

 

 

 1 package com.wst.bj;
 2 
 3 import java.awt.BorderLayout;
 4 import java.awt.Dimension;
 5 import java.awt.Toolkit;
 6 
 7 import javax.swing.JButton;
 8 import javax.swing.JFrame;
 9 import javax.swing.JPanel;
10 import javax.swing.JTextArea;
11 import javax.swing.JTextField;
12 
13 public class LayoutDemo {
14 
15     public static void main(String[] args) {
16         new myFrame();
17     }
18 }
19 
20 /**
21  * @author liuyan
22  *
23  */
24 class myFrame {
25 
26     JFrame jframe = new JFrame("搜索");
27     JTextField textField = new JTextField(20);
28     JButton jButton = new JButton("轉到");
29     JButton jButton2 = new JButton("轉到2");
30     JButton jButton3 = new JButton("轉到3");
31     JButton jButton4 = new JButton("轉到4");
32     JTextArea textArea = new JTextArea();
33     JPanel jPanel = new JPanel(new BorderLayout(5,20));
34     JPanel jPanel2 = new JPanel(new BorderLayout());
35     JPanel jPanel3 = new JPanel(new BorderLayout());
36     JPanel jPanel4 = new JPanel(new BorderLayout());
37     
38     
39     /**
40      * 
41      */
42     public myFrame() {
43 
44         init();
45     }
46     
47     /**
48      * 
49      */
50     private void init()
51     {
52         jframe.setLayout(new BorderLayout());
53         jframe.add(jPanel2, BorderLayout.SOUTH);
54         jframe.add(jPanel3, BorderLayout.EAST);
55         jframe.add(jPanel4, BorderLayout.WEST);
56         jframe.add(jPanel, BorderLayout.NORTH);
57         
58         jPanel.add(jButton, BorderLayout.EAST);
59         jPanel.add(textField, BorderLayout.CENTER);
60 
61         jPanel2.add(jButton2);
62         jPanel3.add(jButton3);
63         jPanel4.add(jButton4);
64 
65         jPanel.setPreferredSize(new Dimension(0, 150)); 66         jPanel2.setPreferredSize(new Dimension(0, 150)); 67         jPanel3.setPreferredSize(new Dimension(150, 0)); 68         jPanel4.setPreferredSize(new Dimension(150, 0)); 69 
70         jframe.add(textArea, BorderLayout.CENTER);
71         
72         jframe.setVisible(true);
73         FrameUtil.initFram(jframe, 500, 700);
74     }
75 }
76 
77 class FrameUtil
78 {
79     public static void  initFram(JFrame f, int width, int height)
80     {
81         Toolkit toolkit = Toolkit.getDefaultToolkit();
82         f.setVisible(true);
83         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
84         Dimension d = toolkit.getScreenSize();
85         int x = (int)d.getWidth();
86         int y = (int)d.getHeight();
87         f.setBounds((x-width)/2, (y - height )/2, width, height);
88     }
89 }

 


 1 package com.wst.bj;
 2 
 3 import java.awt.BorderLayout;
 4 import java.awt.Dimension;
 5 import java.awt.Toolkit;
 6 
 7 import javax.swing.JButton;
 8 import javax.swing.JFrame;
 9 import javax.swing.JPanel;
10 import javax.swing.JTextArea;
11 import javax.swing.JTextField;
12 
13 public class LayoutDemo {
14 
15     public static void main(String[] args) {
16         new myFrame();
17     }
18 }
19 
20 /**
21  * @author liuyan
22  *
23  */
24 class myFrame {
25 
26     JFrame jframe = new JFrame("搜索");
27     JTextField textField = new JTextField(20);
28     JButton jButton = new JButton("轉到");
29     JButton jButton2 = new JButton("轉到2");
30     JButton jButton3 = new JButton("轉到3");
31     JButton jButton4 = new JButton("轉到4");
32     JTextArea textArea = new JTextArea();
33     JPanel jPanel = new JPanel(new BorderLayout(5,20));
34     JPanel jPanel2 = new JPanel(new BorderLayout());
35     JPanel jPanel3 = new JPanel(new BorderLayout());
36     JPanel jPanel4 = new JPanel(new BorderLayout());
37     
38     
39     /**
40      * 
41      */
42     public myFrame() {
43 
44         init();
45     }
46     
47     /**
48      * 
49      */
50     private void init()
51     {
52         jframe.setLayout(new BorderLayout());
53         jframe.add(jPanel2, BorderLayout.SOUTH);
54         jframe.add(jPanel3, BorderLayout.EAST);
55         jframe.add(jPanel4, BorderLayout.WEST);
56         jframe.add(jPanel, BorderLayout.NORTH);
57         
58         jPanel.add(jButton, BorderLayout.EAST);
59         jPanel.add(textField, BorderLayout.CENTER);
60 
61         jPanel2.add(jButton2);
62         jPanel3.add(jButton3);
63         jPanel4.add(jButton4);
64 
65 // jPanel.setPreferredSize(new Dimension(0, 150)); 66 // jPanel2.setPreferredSize(new Dimension(0, 150)); 67 // jPanel3.setPreferredSize(new Dimension(150, 0)); 68 // jPanel4.setPreferredSize(new Dimension(150, 0));
69 
70         jframe.add(textArea, BorderLayout.CENTER);
71         
72         jframe.setVisible(true);
73         FrameUtil.initFram(jframe, 500, 700);
74     }
75 }
76 
77 class FrameUtil
78 {
79     public static void  initFram(JFrame f, int width, int height)
80     {
81         Toolkit toolkit = Toolkit.getDefaultToolkit();
82         f.setVisible(true);
83         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
84         Dimension d = toolkit.getScreenSize();
85         int x = (int)d.getWidth();
86         int y = (int)d.getHeight();
87         f.setBounds((x-width)/2, (y - height )/2, width, height);
88     }
89 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM