【发布时间】:2016-09-05 08:15:46
【问题描述】:
所以我有一个使用 setLayout(null) 的 JFrame,所以我可以手动定位我的元素。
但是,当访问内容窗格并获取框架的大小时,它说它的高度是 1.0。
有谁知道我该如何解决这个问题?
代码如下:
import javax.swing.*;
import java.awt.*;
public class Launcher extends JFrame
{
public Launcher(String title) {
super(title);
setLayout(null);
pack();
setSize(new Dimension(LauncherUtil.LAUNCHER_WIDTH, LauncherUtil.LAUNCHER_HEIGHT));
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
displayComponents();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Launcher launch = new Launcher(LauncherUtil.LAUNCHER_TITLE);
launch.setVisible(true);
}
});
}
private void displayComponents() {
Dimension size = getContentPane().getSize();
JButton launchButton = new JButton("Launch Game");
System.out.println(size.getHeight());
launchButton.setBounds(0, (int)size.getHeight() - 60, (int)size.getWidth(), 60);
add(launchButton);
}
}
【问题讨论】:
-
要么使用适当的布局管理器并为框架调用方法
pack();(添加所有组件时),要么必须自己设置框架大小(参见方法setSize(int, int))。 -
1) Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them 以及white space 的布局填充和边框。 2) 以最小尺寸提供 ASCII 艺术或 GUI 的 预期 布局的简单绘图,如果可调整大小,则具有更大的宽度和高度。
-
launchButton.setBounds(0, (int)size.getHeight() - 60, (int)size.getWidth(), 60);一个按钮拉伸到底部的宽度?PAGE_END的BorderLayout。要增加高度,请使用setMargin(Insets)(或给它一个大字体或图标)。
标签: java swing layout-manager null-layout-manager