/ / java paintComponent (grafika g) nebude fungovať - ​​java, paintcomponent, jcomponent

java paintComponent (grafika g) nebude fungovať - ​​java, paintcomponent, jcomponent

Snažím sa maľovať jednoduchý obdĺžnik, ale toMoja súťaž v paintComponent mi hovorí, že sa dostala do vnútra farby PaintComponent.I som si to už niekoľko hodín, ale nemôžem nájsť to, čo mám robiť zle. PaintComponent je v triede, ktorá rozširuje JComponent tak, ako má. Volám super.paintComponent (g), nie super.paintComponents(g) a soo na. Čo mi chýba?

import java.awt.*;
import javax.swing.*;
public class Board extends JComponent{
private GameCreator game;
public Board(GameCreator game)
{
this.game = game;
}

@Override
public void paintComponent (Graphics g){
super.paintComponent(g);
g.fillRect(50,50,300,300);
g.setColor(Color.orange);
System.out.println("inside piantComponent");
}

public static void main(String[]args)
{
GameCreator game = new GameCreator(8,10);
game.prepareBoard();
Board board = new Board(game);
new Frame("test", board);
}
}




import javax.swing.*;
import java.awt.*;
public class Frame extends JFrame {
Board board;
JPanel gamePanel;

public Frame(String title, Board board) {
super(title);
setLayout(new BorderLayout());
setPreferredSize(new Dimension(800, 800));
pack();
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

this.board = board;
gamePanel = new JPanel();
gamePanel.add(board);
setContentPane(gamePanel);

}
}

odpovede:

1 pre odpoveď č. 1

Vaša doska nemá veľkosť. Nastavte ho pomocou nastaveniaPreferredSize. Takisto musíte zavolať g.setColor pred fillRect.