"I want to pass the graphics component to a panel to be displayed."
No, you don't.
You need to see how to Perform Custom Painting. You're going to need a paintComponent
method in your panel
@Override
protected void paintComponent(Graphic s) {
super.paintComponent(g);
// draw here
}
You don't explicitly call paint
like you are doing here die1P.paint(drawDie.dieSwitch
If you want to be able to set what is being painted, you can have a Die
object that you use to draw. Something like
class Die {
public void draw(Graphics g) {
// draw die here
}
}
Then in your panel class have a setter
for the Die
object, that will repaint the new Die
. You will probably want to have a way to differentiate each die. Pass some arguments to a constructor to do that. Then paint the one die.
public class DiePanel extends JPanel {
private Die die;
public void setDie(Die die) {
this.die = die;
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (die != null) {
die.draw(g);
}
}
}
You may also, instead, want to make Die
an interface, so you can implement difference Die
objects, like DieOne
, DieTwo
, etc. Something like
public interface Die {
void Draw(Grapchis g);
}
public class DieOne {
@Override
public void draw(Graphics g) {
// draw die one
}
}
When you call setDie()
, you can pass a specific Die
, like
DieOne dieOne = new DieOne();
...
diePanel.setDie(dieOne);