2015-12-01 2 views
-1

Есть ли способ рисовать JPanel, используя данные из другого класса? Вот код, который я попробовал:В Java, как я могу использовать JPanel, используя данные из другого класса?

class overlay extends JPanel { 

    public void paintComponent(Graphics g, lineStore data) {   
     super.paintComponent(g); 
     this.setBackground(Color.WHITE); 
     g.setColor(Color.BLUE); 
     for (int i = 0; i < data.length; i++) { 
      g.drawLine(data[i].x1,data[i].y1,data[i].x2,data[i].y2); 
     } 
    } 

} 
+0

Да, но вам нужно передать эти данные на панель с помощью другого метода и вызвать перерисовку. Вы можете использовать [Model-View-Controller] (http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) и [Pattern наблюдателя] (http: // www. oodesign.com/observer-pattern.html) – MadProgrammer

+1

Попробуйте подумать о том, как API уже делает это, например, 'setBackground' – MadProgrammer

+0

Если я переместил массив в класс наложения и сделал что-то вроде frame.redraw() вправо место, это сделает трюк? – Aeglen

ответ

3

Здесь вы идете:

class overlay extends JPanel { 

private lineStore data; 

public overlay(lineStore data) { 
    this.data = data; 
} 

public void paintComponent(Graphics g) {   
    super.paintComponent(g); 
    this.setBackground(Color.WHITE); 
    g.setColor(Color.BLUE); 
    for (int i = 0; i < data.length; i++) { 
     g.drawLine(data[i].x1,data[i].y1,data[i].x2,data[i].y2); 
    } 
} 

}

Чтобы использовать это сделать:

lineStore data; //create lineStore here 
overlay panel = new overlay(data); 
panel.repaint(); 
Смежные вопросы