我對Java Swing比較陌生,並且我對理解網格佈局如何做某些事情有點麻煩,如果他們做不到,那麼網格佈局應該如何更強大去做。從網格佈局到GridBag佈局
這裏是一個程序我試圖與網格佈局
import javax.swing.*;
import java.awt.*;
//import java.awt.event.*;
public class Swing24
{
public static void main(String[] args)
{
JFrame f1= new JFrame("Grid Layout Test");
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f1.setResizable(true);
f1.setLocation(500,200);
f1.setSize(600,600);
JPanel p1 = new JPanel();
p1.setBackground(Color.black);
f1.add(p1);
JButton b1= new JButton("Button 1");
b1.setBackground(Color.white);
JButton b2= new JButton("Button 2");
b2.setBackground(Color.white);
JButton b3= new JButton("Button 3");
b3.setBackground(Color.white);
JLabel lb1=new JLabel(" Label 1");
lb1.setForeground(Color.orange);
//lb1.setOpaque(true);
lb1.setBackground(Color.yellow);
JLabel lb2=new JLabel(" Label 2");
lb2.setBackground(Color.orange);
lb2.setOpaque(true);
GridLayout glm1=new GridLayout(2,3,0,0);
p1.setLayout(glm1);
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(lb1);
p1.add(lb2);
f1.setVisible(true);
}
}
上述程序允許我分開容器分成2行和3列。基本上我可以用一個網格佈局將容器分成m行和n列。但它會連續添加組件(butons和labels)。
問題1:如何直接將一個按鈕添加到大小爲(10,10)的網格中的單元格(4,3)? 問題2:按鈕可以在網格佈局中佔用多個單元嗎?
如果上述任何一個答案都不可行,那麼gridbag佈局如何幫助解決問題。 我嘗試使用一個按鈕的網格佈局佈局。但它被放置在中心!我怎麼能說,把它放到一個容器中的單元格(4,3)上,這個容器可以分爲大小(10,10)< 10行和10列>
非常感謝您的回答。稍後我會回到網格佈局,但是您能否更詳細地解釋網格佈局佈局?我確實閱讀了oracle網站教程。我只問,因爲這對我來說並不是很清楚。也許以對話的形式提供一點反饋會更好。 – user3015246
也許是一個代碼的例子,它只使用gridbag佈局中的一個按鈕,並將按鈕放在網格大小(10,10)的單元格(4,3)中? – user3015246
非常感謝您的編輯。我認爲這個程序創建了一個100個面板,然後在(4,3)的面板上放置一個按鈕。但是,只有一個或兩個組件有沒有辦法工作?你提到了一些關於間隔技巧。我想要使用少量組件並直接操作它們的原因是因爲我想從f JVM的角度思考並瞭解c.gridx,c.gridy,c.weightx等的工作原理。爲什麼他們都被置於中心位置。你的面板(0,0)怎麼能夠坐在左上角,但是即使gridx = 0,我的座標也被放在中心位置? – user3015246