我正在爲改進過濾的自定義源服務器瀏覽器製作GUI。JavaGUI:寬度適合容器的盒子佈局?
這就是我所擁有的so far。
然而,當我resize ...
當我調整我想要的L4D2「過濾器板」來調整到容器的當前最大寬度的窗口。我也希望能夠在一列中添加更多這些面板(例如框佈局提供)。
Boxlayout將面板顯示在列中,但不會爲寬度做任何事情。 我想我可能需要重寫過濾器面板首選大小的方法,以便他們可以檢索父容器的大小,但我不知道如何做到這一點。
我該如何解決這個問題?
編輯:下面是一個示例程序,描述了這個問題。
import javax.swing.*;
import java.awt.*;
public class guiExampleProblem {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final MyWindows wnd = new MyWindows("guiExampleProblem");
wnd.setVisible(true);
}
});
}
}
class MyWindows extends JFrame {
public MyWindows(String text) {
super(text);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
JPanel containerPanel1 = new JPanel();
JPanel containerPanel2 = new JPanel();
JPanel containerPanel3 = new JPanel();
containerPanel1.setBackground(Color.BLACK);
containerPanel2.setBackground(Color.RED);
containerPanel3.setBackground(Color.GREEN);
mainPanel.add(containerPanel1);
mainPanel.add(containerPanel2);
mainPanel.add(containerPanel3);
this.add(mainPanel);
pack();
}
}
當被調整大小的窗口中,我想將面板僅沿着x軸膨脹,並保持在上,y軸具有恆定的高度,但是本例中的面板上都xy軸展開。
感謝您的回覆,我已更新我的問題以更具體。 – tommy
[不要使用setXXSize,有史以來](http://stackoverflow.com/a/7229519/203657) – kleopatra