Java 布局设置中的问题
我制作了一个Java 布局设置中的问题,java,swing,layout,gridbaglayout,border-layout,Java,Swing,Layout,Gridbaglayout,Border Layout,我制作了一个JFrame,在这个框架内,有一个面板,我使用GridBagLayout在上面放置了各种容器。我已将JFrame的布局设置为BorderLayout,并在BorderLayout.WEST中添加了面板。我想在左上角显示面板的容器。我该怎么做 即使我尝试将面板添加到BorderLayout.NORTH中,它也会显示在顶部的中间位置,但是我想显示在左上角 有办法吗?即,我想展示的任何其他布局 label1 button1 button2 button3 label2 b
JFrame
,在这个框架内,有一个面板,我使用GridBagLayout
在上面放置了各种容器。我已将JFrame
的布局设置为BorderLayout
,并在BorderLayout.WEST
中添加了面板。我想在左上角显示面板的容器。我该怎么做
即使我尝试将面板添加到BorderLayout.NORTH
中,它也会显示在顶部的中间位置,但是我想显示在左上角
有办法吗?即,我想展示的任何其他布局
label1
button1 button2 button3
label2
button1 button2 button3
label 3
button1 button2 button3
有很多方法可以做到这一点,其中之一就是进一步嵌套JPanel。放置一个JPanel BorderLayout.NORTH,并给它一个BorderLayout。然后将另一个JPanel添加到这个JPanel,BorderLayout.WEST 边框布局不允许您直接向西北方向添加内容
您可能希望将
JFrame
的布局设置为GridBagLayout
,这样您就可以拥有所需的灵活性,只需GridLayout
和BorderLayout
即可轻松完成
import java.awt.*;
import javax.swing.*;
class LabelButtonLayout {
public static Component getButtonLayout(int num) {
JPanel p = new JPanel(new BorderLayout(3,3));
p.add(new JLabel("Label " + num), BorderLayout.NORTH);
JPanel b = new JPanel(new GridLayout(1,0,25,5));
for (int ii=1; ii<4; ii++) {
b.add(new JButton("Button " + ii));
}
p.add(b, BorderLayout.CENTER);
return p;
}
public static void main(String[] args) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
JPanel gui = new JPanel(new GridLayout(0,1,3,15));
for (int ii=1; ii<4; ii++) {
gui.add(getButtonLayout(ii));
}
JOptionPane.showMessageDialog(null, gui);
}
});
}
}
import java.awt.*;
导入javax.swing.*;
类标签按钮布局{
公共静态组件getButtonLayout(int num){
JPanel p=新JPanel(新边界布局(3,3));
p、 添加(新的JLabel(“标签”+num),BorderLayout.NORTH);
JPanel b=新JPanel(新网格布局(1,0,25,5));
对于(int ii=1;iiya我已经在Jpanel中使用了gridbag布局来设置容器,正如我已经提到的是。但是你可能想让现在在BorderLayout
中的JFrame
成为它自己的GridBagLayout
。嘿,我们可以在其中设置两个gridbag布局,但是我在gridbag布局中设置的任何东西都会在中间加上。所以both gridx=0和gridy=0重叠如果答案是GridBagLayout
,那肯定是个愚蠢的问题(大多数时候)。对于JLabel
,没有必要添加约束性的“左”面板。请参见我的示例。不过,嵌套布局为+1。@Geetanjali,如果我理解你的问题(我不确定我是否理解它),我的示例演示了。请注意,没有类似的NestedLayout
类。嵌套布局只是将不同的布局组合起来,以实现使用任何其他单一布局都难以实现的效果。@Andrew:是的,先生,我是knw,但我能够在Jframe中添加嵌套Jpanel。向任何内容添加嵌套Jpanel都很容易它需要出现在中。它是否是一个JOptionPane
/JDialog
、一个JFrame
、一个JWindow
或JApplet
、一个JSplitPane
、另一个JPanel
等都无关紧要。如果你想不出怎么做,我建议你问另一个问题,并展示请尽你最大的努力。作为个人请求,请不要叫我“先生”。如果有必要特别提到我,“Andrew”很好。要嵌套JPanel,只需创建一个JPanel并将其添加到另一个JPanel中。