Javaを使用してSnakeゲームを開発しています。ボード(すべてのアクションが実行される場所)の幅と高さを固定する必要があります(640ピクセル* 480ピクセル)。
構造:
Main クラスには次のようなものがあります...
setSize( 1024, 768 );
...そしてボードクラスでは...
setSize( BOARDS_WIDTH, BOARDS_HEIGHT );
問題は、メインで唯一のウィンドウが1024 * 768のように見えるが、その内側のパネル-640 * 480ではないことです。 setBackground()もあり、背景は640 * 480。
ボードの幅と高さを640 * 480のようにする方法はありますが、メインウィンドウの幅と高さ-ボードの幅と高さは正しいですか?
今はこんな感じです...
編集:
すべて動作します...ほとんど。
Main クラス:
add( new Board(), BorderLayout.CENTER );
pack();
setResizable( false );
setLocationRelativeTo( null );
setVisible( true );
setDefaultCloseOperation( EXIT_ON_CLOSE );
setTitle( "Snake (by daGrevis)" );
Board クラス:
setPreferredSize( new Dimension( 640, 480 ) );
灰色の背景は642 * 482です! 1ピクセルですべてを囲む境界線があるように!
お願いします、何かがxxx * 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);