Je développe un jeu Snake en utilisant Java. La largeur et la hauteur de la carte (là où toute action a lieu) doivent être fixes (640 pixels * 480 pixels).
Structure:
Dans la classe principale j'ai quelque chose comme ...
setSize( 1024, 768 );
... et en classe Board j'ai ...
setSize( BOARDS_WIDTH, BOARDS_HEIGHT );
Le problème est que les fenêtres principales et seules semblent être comme 1024 * 768, mais le panneau à l'intérieur - pas comme 640 * 480. J'ai setBackground () as bien et le fond est rempli plus de 640 * 480.
Existe-t-il un moyen de rendre la largeur et la hauteur de la planche comme 640 * 480, mais la largeur et la hauteur des fenêtres principales - autant que la largeur et la hauteur de la planche sont correctes?
En ce moment, ça ressemble à ça ...
Modifier:
Tout fonctionne ... presque.
Classe principale :
add( new Board(), BorderLayout.CENTER );
pack();
setResizable( false );
setLocationRelativeTo( null );
setVisible( true );
setDefaultCloseOperation( EXIT_ON_CLOSE );
setTitle( "Snake (by daGrevis)" );
Classe Board :
setPreferredSize( new Dimension( 640, 480 ) );
Le fond gris est 642 * 482! Comme s'il y avait une bordure qui enveloppe tout d'un pixel!
s'il vous plaît, quelque chose s'est passé x x x * x, et ce n'est pas vrai du tout, vérifiez que
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]
code (trucs de base de Trail: Création d'une interface graphique avec JFC/Swing , et pourtant je suis toujours convaincu que ce serait obsolète)
EDIT: oublier 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);