Hallo,
ich Entwickel zur Zeit ein Programm in dem es wichtig ist, dass verschiedene Klasse mit einander interagieren.
Mein Problem ist folgendes:
Ich habe zwei Klassen, in der einen ist eine JList mit verschiedenen Räumen, wenn ich einen selektiere soll der betreffende Raum in einer anderen Klasse entsprechend farbig markiert werden.
Die Räume zeichne ich mit Java2D (auf einem JComponent), es sollte also eigentlich nur die Farbe für den entsprechenden Raum auf z.B rot gesetzt werden und dann neu gezeichnet werden.
Leider bekomme ich es nicht hin, dass der Raumplan neu gezeichnet wird wenn sich die Farbe ändert, ich muss immer erst irgendetwas machen, wie zum Beispiel die Größe des Fensters ändern bevor etwas geschieht.
Bin da leider mit meinem Latein am Ende, ich hoffe ihr könnt mir helfen.
Hier mal ein Code ausschnitt:
Klasse mit der JList
Der Gebäudeplan, die Methode drawRoomOne(), wird in painComponent() aufgerufen.
ich Entwickel zur Zeit ein Programm in dem es wichtig ist, dass verschiedene Klasse mit einander interagieren.
Mein Problem ist folgendes:
Ich habe zwei Klassen, in der einen ist eine JList mit verschiedenen Räumen, wenn ich einen selektiere soll der betreffende Raum in einer anderen Klasse entsprechend farbig markiert werden.
Die Räume zeichne ich mit Java2D (auf einem JComponent), es sollte also eigentlich nur die Farbe für den entsprechenden Raum auf z.B rot gesetzt werden und dann neu gezeichnet werden.
Leider bekomme ich es nicht hin, dass der Raumplan neu gezeichnet wird wenn sich die Farbe ändert, ich muss immer erst irgendetwas machen, wie zum Beispiel die Größe des Fensters ändern bevor etwas geschieht.
Bin da leider mit meinem Latein am Ende, ich hoffe ihr könnt mir helfen.
Hier mal ein Code ausschnitt:
Klasse mit der JList
Code:
class ListListener implements ListSelectionListener {
ListListener() {}
public void valueChanged(ListSelectionEvent e) {
drawSelectedStationInfo(GuiController.getInstance().getStationByName(_jlStationList.getSelectedValue().toString()));
_selectedValue = _jlStationList.getSelectedValue().toString();
notifyAdvertisement(new ChangeStationEvent(this, _selectedValue));
repaint();
}
synchronized void notifyAdvertisement( ChangeStationEvent event ){
for(ChangeStationListener c : _listeners.getListeners( ChangeStationListener.class )){
c.advertisement(event);
}
}
}
Der Gebäudeplan, die Methode drawRoomOne(), wird in painComponent() aufgerufen.
Code:
void drawRoomOne(){
//Room 1
g2d.setColor(Color.white);
g2d.fillRect(30, 30, 150, 150);
g2d.setColor(Color.black);
g2d.drawString("1 OG", 35, 45);
g2d.setColor(_colorRoom1);
g2d.setStroke( new BasicStroke( 3 ) );
g2d.drawRect(70, 70, 70, 50);
}
public void advertisement(ChangeStationEvent e) {
_colorRoom1 = Color.red;
repaint();
}
Zuletzt bearbeitet: