gpt4 book ai didi

java - 在 JPanel 中设置方向

转载 作者:行者123 更新时间:2023-12-01 12:22:19 25 4
gpt4 key购买 nike

我正在尝试使用嵌套的 JPanel,然后我可以在应用程序的不同部分重用它,例如页面顶部的导航栏。我在设置项目的方向时遇到问题,例如我希望按钮位于文本字段上方。

如果我单独创建它们并将它们直接添加到 JPanel 中,它们会按预期出现在另一个之上,如下所示:

    final JFrame frame = new JFrame("Nested Layout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel gui = new JPanel(new BorderLayout(5,5));
gui.setBorder( new TitledBorder("BorderLayout(5,5)") );

JButton button = new JButton("Button");
JButton button1 = new JButton("Button1");
gui.add(button, BorderLayout.NORTH);
gui.add(button1, BorderLayout.SOUTH);

frame.setContentPane(gui);

frame.pack();

frame.setLocationRelativeTo(null);
try {
// 1.6+
frame.setLocationByPlatform(true);
frame.setMinimumSize(frame.getSize());
} catch(Throwable ignoreAndContinue) {
}

frame.setVisible(true);

但是,如果我创建一个嵌套的 JPanel 并将其放入另一个 JPanel 中,以便我可以重用它,它们会并排出现,如下所示:

 final JFrame frame = new JFrame("Nested Layout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JPanel gui = new JPanel(new BorderLayout(5,5));
gui.setBorder( new TitledBorder("BorderLayout(5,5)") );

JPanel container = new JPanel();
JButton button = new JButton("Button");
JButton button1 = new JButton("Button1");
container.add(button, BorderLayout.NORTH);
container.add(button1, BorderLayout.SOUTH);

gui.add(container);

frame.setContentPane(gui);

frame.pack();

frame.setLocationRelativeTo(null);
try {
// 1.6+
frame.setLocationByPlatform(true);
frame.setMinimumSize(frame.getSize());
} catch(Throwable ignoreAndContinue) {
}

frame.setVisible(true);

我尝试设置 componenetOrientation,

container.setComponentOrientation(ComponentOrientation.);

但是没有垂直选项

最佳答案

I have tried setting the componenetOrientation

请注意,该问题与组件方向无关:这是一个布局管理器问题,如下所述。

However, if I create a nested JPanel and put it inside another JPanel, so I can reuse it, they come out side by side

这里:

JPanel container = new JPanel();
...
container.add(button, BorderLayout.NORTH);
container.add(button1, BorderLayout.SOUTH);

面板的默认布局管理器是 FlowLayout并且它将忽略 BorderLayout 约束。您必须设置 BorderLayout作为布局管理器不仅适用于 gui 面板,也适用于 container 面板。

JPanel container = new JPanel(new BorderLayout());
...
container.add(button, BorderLayout.NORTH);
container.add(button1, BorderLayout.SOUTH);

关于java - 在 JPanel 中设置方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26586604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com