私はsetLayout(null)
を使用するJFrameを手に入れました。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を使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 2)ASCIIアート、またはGUIの*意図された*レイアウトの簡単な図を最小サイズで提供し、サイズ変更可能な場合は幅と高さを増やします。 –
'launchButton.setBounds(0、(int)size.getHeight() - 60、(int)size.getWidth()、60);'ボトムの幅に伸びたボタン? 'BorderLayout'の' PAGE_END'です。高さを上げるには、 'setMargin(Insets)'を使う(または大きなフォントやアイコンを与える)。 –