Как передать значения в paintComponent
Нельзя передать значения в paintComponent()
.
Но так как я вызываю repaint () изГлавное, чтобы вызвать paintComponent, я не могу передать значения в paintComponent.Как мне это сделать?
Для любого объекта, который вы хотите настроить и нарисовать самостоятельно, вы можете создать для него класс и иметь метод, подобный draw()
, для рисования, например:
//Just a normal class with a draw() method
class BarGraph{
private int x;
private int y;
private int width;
private int height;
private Color color;
public BarGraph(int x, int y, int width, int height){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public void setColor(Color color){
this.color = color;
}
public void draw(Graphics g){
g.setColor(color);
g.fillRect(x, y, width, height);
}
}
Затем на главной панели для отображения настроенного вами изображения:
class DrawingSpace extends JPanel{
private BarGraph barGraph;
public DrawingSpace(){
barGraph = new BarGraph(50, 50, 400, 100);
barGraph.setColor = (Color.RED);
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g){
barGraph.draw(g); //draw your own customized object
}
}
}
Таким образом, вместо того, чтобы пытаться передать значения, чтобы диктовать, как рисовать paintComponent, вы можете передать / установить свои значения вваш собственный класс (в данном случае, класс BarGraph).Из графического содержимого реализуйте, как вы хотите, чтобы оно рисовалось.
В вашем paintComponent просто вызовите метод draw, у которого уже есть «набор инструкций» для его рисования.