Hallo,
ich will ´die Gui für ein Damespiel schreiben,
Dafür habe ich die Klasse GamePanel die von JPanel erbt, von dieser Klasse erbt die Klasse CheckersPanel ein spezielles Spiel
Dann habe ich noch die Klasse CheckersBoard, die das Schachbrett zeichnet.
Und in der Klasse GameGuiComponent wirde alles in einem frame gepackt und dargestellt.
Jetzt zu meinen zwei problemen . das erste ist das wenn ich GameGuiComponent aufrufe nur ein leeres Frame entsteht?
und das zweite ich möchte auf die Klasse checkersboard verzichten. Wie schaffe ich es das ich in der klasse checkerspanel eine methode schreibe die nur etwas für das panel board zeichntt , denn die paint methode zeichnet ja das komplette panel. oder was muss ich ändern das ich die paint methode aufruf das brett gezeichnet wird und die buttons und Labels trotzdem noch darum erscheinen?
Hier der quellcode meiner Klassen
ich will ´die Gui für ein Damespiel schreiben,
Dafür habe ich die Klasse GamePanel die von JPanel erbt, von dieser Klasse erbt die Klasse CheckersPanel ein spezielles Spiel
Dann habe ich noch die Klasse CheckersBoard, die das Schachbrett zeichnet.
Und in der Klasse GameGuiComponent wirde alles in einem frame gepackt und dargestellt.
Jetzt zu meinen zwei problemen . das erste ist das wenn ich GameGuiComponent aufrufe nur ein leeres Frame entsteht?
und das zweite ich möchte auf die Klasse checkersboard verzichten. Wie schaffe ich es das ich in der klasse checkerspanel eine methode schreibe die nur etwas für das panel board zeichntt , denn die paint methode zeichnet ja das komplette panel. oder was muss ich ändern das ich die paint methode aufruf das brett gezeichnet wird und die buttons und Labels trotzdem noch darum erscheinen?
Hier der quellcode meiner Klassen
Code:
package gui;
import javax.swing.*;
import java.awt.image.*;
import java.awt.*;
public class GamePanel extends JPanel{
/**
*
*/
private static final long serialVersionUID = 1L;
public JPanel control;
public JLabel message;
public JPanel mainPanel;
public JLabel title;
GamePanel(){
message = new JLabel();
message.setHorizontalAlignment(SwingConstants.CENTER);
message.setText("Spielstart");
control = new JPanel();
control.setLayout(new BoxLayout(control, BoxLayout.Y_AXIS));
JButton start = new JButton("Start");
control.add(start);
JButton pause = new JButton("Pause");
control.add(pause);
JButton ende = new JButton("Ende");
control.add(ende);
JButton neu = new JButton("Neues Spiel");
control.add(neu);
title = new JLabel("Spiel", SwingConstants.CENTER);
Font bigFont = new Font("sansSerif", Font.BOLD, 24);
title.setFont(bigFont);
mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
mainPanel.add(message, BorderLayout.SOUTH);
mainPanel.add(control, BorderLayout.EAST);
mainPanel.add(title, BorderLayout.NORTH);
mainPanel.setVisible(true);
mainPanel.setSize(700, 500);
this.add(mainPanel);
}
}
Code:
package gui;
import javax.swing.*;
import java.awt.*;
import gui.CheckersBoard;
public class CheckersPanel extends GamePanel {
/**
*
*/
private static final long serialVersionUID = 1L;
CheckersPanel(){
super();
title.setText("Dame");
board = new CheckersBoard();
board.setSize(400,400);
board.setVisible(true);
mainPanel.add(board, BorderLayout.WEST);
this.add(mainPanel);
}
}
Code:
package gui;
import gui.GamePanel;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class GameGuiComponent {
GameGuiComponent(){
JFrame f = new JFrame();
GamePanel spiel = new GamePanel();
f.add(spiel);
f.setVisible(true);
f.setSize(500, 500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
GameGuiComponent gui = new GameGuiComponent();
}
}
Code:
package gui;
import javax.swing.*;
import java.awt.image.*;
import java.awt.*;
public class CheckersBoard extends JPanel {
public void paint(Graphics g){
Color braun = new Color (0.7f,0.6f,0.0f);
int fieldSize = Math.min(this.getHeight()/8 , this.getWidth()/8);
for (int i = 0 ; i<8; i++){
for (int j = 0 ; j<8; j++){
g.setColor((i%2==0 ^ j%2==0 ? braun : Color.YELLOW));
g.fillRect(i*fieldSize, j*fieldSize, fieldSize, fieldSize);
}
}
}
}