Zeichnung einem JPanel im Layoutmanager zuweisen

fischebr

Mitglied
Hallo,

mag mir einer von Euch mal weiterhelfen. Ich habe eine Klasse Board, in der ein Gitter gezeichnet wird. Dieses Gitter möchte ich jetzt einem JPanel im Layoutmanager zuweisen. Wie rufe ich die Zeichnung jetzt auf?

Mein Versuch:
Code:
public class Board extends JPanel  {
   
  // Eigenschaften
  private String board[][];
    
  // Konstruktor
  public Board(String k) {
       board = new String[10][10];
       for (int r = 0; r < board.length; r++) {  
            for (int c = 0; c < board[r].length; c++) {  
                 board[r][c] = k;  
                 }
            }
       }
   
  //Methoden
  void showBoard() {  
       for(int r = 0; r < board.length; r++) {
            for(int c = 0; c < board[r].length; c++) {
                 System.out.print(board[r][c]);
            }
            System.out.println();
       }
  }
 
@Override
  protected void paintComponent(Graphics g) {
       super.paintComponent(g);
       Graphics2D g2d = (Graphics2D) g;
       g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
   
  drawBoard(g2d);
  }
   
  private void drawBoard(Graphics g2) {
       int r;
       int c;
       g2.setColor(Color.BLACK);
       for (r = 0; r <= board.length; r++) {
            g2.drawLine(0, 60 * r, 600, 60 * r);
       }
       for (c = 0; c < board[r].length; c++) {
            g2.drawLine(60 * c, 0, 60 * c, 600);
       }
            for (r = 0; r < board.length; r++) {
                 for (c = 0; c < board[r].length; c++) {
                      g2.setColor(new Color(216, 165, 93));
                      g2.fillRect(0, 0, 60, 60);
                 }
        }
  }
Code:
private void addWidgets() {
  getContentPane().setLayout(new BorderLayout(5, 5));
  getContentPane().setBackground(Color.WHITE);
  getContentPane().add(BorderLayout.PAGE_START, lblHeader);
  getContentPane().add(BorderLayout.CENTER, pnlBoard);
   
  pnlBoard.add(board);
     
  }

  private void createWidgets() {
  
  pnlBoard = new JPanel();
  pnlBoard.setBackground(Color.WHITE);
  pnlBoard.setLayout(null);
   
  }
 
Gibt es in der Main-Methode! Das ganze ist ein größeres Projekt. Meine Frage bezog sich darauf, welche Parameter ich bei "pnl.add(???)" übergeben muss.
 
add() erwartet die Komponente die du übergeben willst als Parameter.
Demnach wäre eine Instanz von deinem JPanel auf dem du malst angebracht. (Das willst du Ja hinzufügen )

Java:
Board board =new Board();
pnl.add(board);
 

Zurück
Oben