我在使用JFrame
和JButtons时遇到了问题。我试图将JButton
作为中心,但是当我这样做时,它几乎覆盖整个屏幕。有什么想法导致这个问题?
这是一张关于它的外观的图片:
这是我的代码:
package character;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
/**
* Created by Niknea on 6/28/14.
*/
public class characterSelector{
JFrame cselectorButtons, clogo;
JLabel logo, characterName, label;
JButton male, female;
public characterSelector(){
this.createCharacterSelector();
}
public void createCharacterSelector() {
try {
label = new JLabel(new ImageIcon(ImageIO.read(getClass()
.getResource("/resources/Grass_Background.jpg"))));
cselectorButtons = new JFrame("SupremeSoccer");
logo = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getResource("/resources/Character_Selector_Image.png"))));
characterName = new JLabel("<Character Name>");
characterName.setFont(new Font(characterName.getFont().getName(),
Font.HANGING_BASELINE, 50));
/*
Buttons
*/
male = new JButton("Male");
////******************////
//// END OF BUTTONS ////
////****************////
cselectorButtons.add(logo);
cselectorButtons.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cselectorButtons.setContentPane(label);
cselectorButtons.setLayout(new BorderLayout());
cselectorButtons.add(logo, BorderLayout.NORTH);
cselectorButtons.add(male, BorderLayout.CENTER);
cselectorButtons.pack();
cselectorButtons.setLocationRelativeTo(null);
cselectorButtons.setVisible(true);
} catch (IOException exp) {
exp.printStackTrace();
}
}
}
再次感谢。
答案 0 :(得分:3)
对于造成这种情况的原因有什么想法?
这是BorderLayout
的默认行为。当CENTER
,NORTH
,SOUTH
,{{1 }})位置已被考虑
根据您要实现的目标,您可以考虑创建另一个EAST
(将其WEST
状态设置为JPanel
,以便它是透明的)并使用取而代之的是opaque
或false
。
请查看A Visual Guide to Layout Managers了解更多想法
<强>更新强>
因此,根据您的linked code,我更改了
GridLayout
到
GridBagLayout
得到......
更新了其他示例
首先将您的需求分解为单个容器,然后关注每个人的布局要求,然后将它们全部构建回一个容器中。
这将使以后更容易更改它们,并使控制它们更容易......
part2 = new JPanel();
答案 1 :(得分:2)
使用BoxLayout
或(更简单)GridBagLayout
作为底部区域,如this answer中所示。