【发布时间】:2014-01-23 20:48:04
【问题描述】:
我正在为具有改进过滤功能的自定义源服务器浏览器制作 GUI。
这就是我拥有的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 轴上保持恒定高度,但在示例中,面板同时在 x y 轴上展开。
【问题讨论】:
标签: java swing user-interface resize width