
Achieving a Robust and Resizable Swing Chess GUI
Introduction
When creating a robust and resizable Swing Chess GUI, it's essential to address specific design requirements, including the following:
- Tool-bar with buttons for game Aktionen (neu, speichern usw.)
- Platzhalter für zukünftige Merkmale (z. B. Pfandförderungsauswahl)
- Hauptschachboardbereich mit Labels für Reihen und Spalten
- quadratische Chess-Boards, die sich mit verfügbarem Space
- und unterschiedliche Sätze und Colors und Colors und Colors und Chols ärgern und Chors und Colors of Chess ärgern piect
entwerfen Sie Überlegungen
um diese Anforderungen zu erfüllen, betrachten Sie die folgenden Strategien:
- gridlayout für Schussbrett: verwenden Sie ein 9x9 -Graidlayout für das Chess -Board, und ein 9x9 -Graidlayout für das Chess -Board, ein Tag, ein 9x9 -Graidlayout für das Chess -Brett, mit dem ersten Zell mit einem 9x9 -Gravern für das Schusszell, mit dem Erress -Loda -Mit -Lod -Einsatz. text.
- button Array für Spiellogik: ein separates 8x8 -Array von Schaltflächen für einfachere Spiellogik.
- Keyboard -Funktionalität: Verwenden Sie Schaltflächen für Chessboard -Plätze, um beide Tastaturen und Maus -Ereignisse. Schachbrett zu einem Gridbaglayout als einzige Komponente ohne angegebene Einschränkungen. Es wird zentriert und dimensioniert, um mit der übergeordneten Komponente übereinzustimmen. Während der Verwendung von Bildern einfach ist, kann die Verwendung von Unicode -Zeichen vielseitiger und leichtes Gewicht sein.
- codesimplementierung
- Hier ist eine Beispielcode -Implementierung:
import Java.awt.*;
import Java.awt.event.*;
Javax.swing importieren.*;
öffentliche Klasse Schachgui {
Private Jpanel GUI = New Jpanel (New BorderLayout (3, 3));
Private Jbutton [] [] chessboardsquares = new Jbutton [8] [8];
Private Final JLabel Message = New JLabel ("Schachmeister ist bereit zu spielen!");
private statische endgültige String cols = "abcdefgh";
Private statische Finale int Queen = 0, König = 1,
Rook = 2, Ritter = 3, Bischof = 4, Pfand = 5;
private statische endgültige int [] start_row = {
Rook, Ritter, Bischof, König, Königin, Bischof, Ritter, Rook
};
private statische endgültige int schwarz = 0, weiß = 1;
Chessgui () {
initializeGui ();
}
public final void initializeGui () {
...
}
public final jcomponent getGui () {
GUI zurückgeben;
}
private endgültige void setupNewGame () {
...
}
public static void main (String [] args) {
...
}
}
Durch die Implementierung dieser Strategien können Entwickler eine robuste und resizbare Swing -Schach -GUI erstellen, die den beschriebenen Designanforderungen erfüllt.