Java 摇摆布局

Java 摇摆布局,java,swing,layout,Java,Swing,Layout,这是我的布局 两个单选按钮应位于欢迎标签下方。 像这样: __________________________ | | | WELCOME | | * * | | | | | | | |________________________| n

这是我的布局

两个单选按钮应位于欢迎标签下方。

像这样:

__________________________
|                        | 
|        WELCOME         |
|         *  *           |
|                        |
|                        |
|                        |
|________________________|
 northpanel -> BorderLayout, JFrame's NORTH position
 welcome -> northpanel NORTH position
 northpanel1 -> FlowLayout, northpanel CENTER position
两个星号是单选按钮

我的代码:

northpanel.setLayout(new FlowLayout(FlowLayout.CENTER));
northpanel1.setLayout(new FlowLayout(FlowLayout.CENTER));


northpanel.add(welcome);  //this welcome text label

northpanel1.add(r1);   //this radio 1
northpanel1.add(r2);   //this radio 2


add(northpanel,BorderLayout.NORTH);
add(northpanel1,BorderLayout.NORTH);

边界布局
区域中不能添加多个组件,并且最终要添加。您需要将
northpanel
更改为
BorderLayout
,然后将欢迎文本和
northtestpanel1
放入其中,如下所示:

__________________________
|                        | 
|        WELCOME         |
|         *  *           |
|                        |
|                        |
|                        |
|________________________|
 northpanel -> BorderLayout, JFrame's NORTH position
 welcome -> northpanel NORTH position
 northpanel1 -> FlowLayout, northpanel CENTER position

您可能在将
welcome
放在中心位置时遇到问题(我只是猜测,也许它会工作得很好)。如果您没有任何解决方案,只需将其包装到一个新的
JPanel
中,并将
FlowLayout
FlowLayout.CENTER
一起使用
northpanel
northpanel
添加到具有
GridLayout(0,1)
面板中即可

add(panel, BorderLayout.NORTH);

您必须使用GridLayout或GridBagLayout而不是Flow-layout。首先设置northpanel的GridBagLayout,然后添加所需的组件,比如单选按钮和wellcome标签。有关更多详细信息,请咨询

import javax.swing.*;
导入java.awt.BorderLayout;
导入java.awt.FlowLayout;
导入java.awt.GridLayout;
公共类堆栈溢出14837740
{
公共静态void main(字符串[]args)
{
SwingUtilities.invokeLater(新的可运行()
{
@凌驾
公开作废运行()
{
createAndShowGUI();
}
});
}
私有静态void createAndShowGUI()
{
JFrame=newjframe();
frame.setLayout(新的BorderLayout());
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel northPanel=新JPanel(新网格布局(2,1));
JPanel-welcomePanel=newjpanel(newflowlayout(FlowLayout.CENTER));
welcomePanel.add(新JLabel(“欢迎”));
northPanel.add(welcomePanel);
JPanel radioPanel=新的JPanel(新的FlowLayout(FlowLayout.CENTER));
JRadioButton button1=新的JRadioButton(“按钮1”,true);
JRadioButton button2=新的JRadioButton(“按钮2”,false);
ButtonGroup=新建ButtonGroup();
group.add(按钮1);
group.add(按钮2);
radioPanel.add(按钮1);
radioPanel.add(按钮2);
northPanel.add(radioPanel);
JPanel middlePanel=新的JPanel(新的网格布局(3,3));
对于(int i=0;i<3;i++)
{
对于(int j=0;j<3;j++)
{
middlePanel.add(新的JButton(“按钮”+i+j));
}
}
JPanel-southPanel=newjpanel(newflowlayout(FlowLayout.CENTER));
southPanel.add(新JLabel(“轮到谁了”);
southPanel.add(新的JButton(“重置”));
frame.add(northPanel,BorderLayout.NORTH);
frame.add(中间面板,BorderLayout.CENTER);
frame.add(southPanel,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
}
看起来是这样的(尽管您必须稍微调整它的大小):


您的问题具体是什么?Hpw获取欢迎标签下方的两个单选按钮解决方案:不要使用FlowLayout。对主容器使用BorderLayout,然后中心容器应该使用GridLayout来保存JRadioButtons。只是一个问题,标题栏上最小化按钮左侧的箭头状按钮是什么?哦,这是teamviewer软件将其添加到windows中,以便我可以向其他人共享特定的窗口欢迎标签在屏幕上被推到最左侧,但两个单选按钮集中在needed@user2016977:尝试
FlowLayout.CENTER
打开欢迎小组,SoboLAN.哇..非常感谢..我真的很惊讶这个社区在回答问题上所做的努力!!继续努力!:)@用户2016977这是因为社区规模巨大(数十万人)。。。哦,因为我们很棒:D。