簡體   English   中英

如何設置JPanel的寬度和高度?

[英]How to Set JPanel's Width and Height?

我正在使用Java開發Snake游戲。 Board(所有動作都取而代之)寬度和高度應固定(640像素×480像素)。

結構體:

  • JFrame類擴展的類,
  • JPanel類擴展的Board類;

類我有類似...

setSize( 1024, 768 );

......在董事會上我有...

setSize( BOARDS_WIDTH, BOARDS_HEIGHT );

問題是主要和唯一的窗口似乎像1024 * 768,但它內部的面板 - 不像640 * 480.我也有setBackground() ,背景填充超過640 * 480。

有沒有辦法讓Board的寬度和高度像640 * 480,但主窗口的寬度和高度 - 和Board的寬度和高度一樣正確嗎?

現在它看起來像這樣......

寬度和高度約為1000 * ~750,而不是640 * 480。

編輯:

所有作品......差不多。

主要課程:

add( new Board(), BorderLayout.CENTER );
pack();
setResizable( false );
setLocationRelativeTo( null );
setVisible( true );
setDefaultCloseOperation( EXIT_ON_CLOSE );
setTitle( "Snake (by daGrevis)" );

董事會類:

setPreferredSize( new Dimension( 640, 480 ) );

灰色背景是642 * 482! 就像會有一個像素包圍所有邊界!

請問,有些東西是x x x * x,這根本不是真的,請檢查一下

JButton Size - java.awt.Dimension[width=400,height=40]
JPanel Size - java.awt.Dimension[width=640,height=480]
JFrame Size - java.awt.Dimension[width=646,height=505]

代碼(來自Trail的基本內容:使用JFC / Swing創建GUI ,但我仍然認為這會過時)

編輯:忘記setDefaultCloseOperation()

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FrameSize {

    private JFrame frm = new JFrame();
    private JPanel pnl = new JPanel();
    private JButton btn = new JButton("Get ScreenSize for JComponents");

    public FrameSize() {
        btn.setPreferredSize(new Dimension(400, 40));
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("JButton Size - " + btn.getSize());
                System.out.println("JPanel Size - " + pnl.getSize());
                System.out.println("JFrame Size - " + frm.getSize());
            }
        });
        pnl.setPreferredSize(new Dimension(640, 480));
        pnl.add(btn, BorderLayout.SOUTH);
        frm.add(pnl, BorderLayout.CENTER);
        frm.setLocation(150, 100);
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // EDIT
        frm.setResizable(false);
        frm.pack();
        frm.setVisible(true);
    }

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                FrameSize fS = new FrameSize();
            }
        });
    }
}
Board.setPreferredSize(new Dimension(x, y));
.
.
//Main.add(Board, BorderLayout.CENTER);
Main.add(Board, BorderLayout.CENTER);
Main.setLocations(x, y);
Main.pack();
Main.setVisible(true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM