Im Entwickeln einer GUI-Anwendung, die JSWing verwendet, lade ich XML-Datei, deserialiere sie dann und füge dann alle erstellten Objekte dem JPanel hinzu. jedoch bis ich das Fenster zu verschieben, oder auf dem Panel klicken, das ist, wie sie wieJava-Repaint zeigt Komponente nicht korrekt an
sehen
Nachdem ich das Fenster zu verschieben, sie sehen richtig, so wie dieses Problem zu beheben <
ich sah diesen Link http://docs.oracle.com/javase/6/docs/api/javax/swing/JComponent.html#paintComponent(java.awt.Graphics) und es könnte die Antwort sein, da in dem Konstruktor des JComponent verwenden i
setOpaque(true);
aber ich bin immer noch nicht sicher, wie das Problem zu beheben, da dieser Teil der Dokumentation sehr schwer zu verstehen ist (es macht irgendwie einfach keinen Sinn für mich :-D)
Übrigens, die Malerei selbst geht so etwas wie diese
for (NetObject o : objects) {
addNewObject(o);
}
und addNewObject (nicht ganz Code)
public void addNewObject(NetObject o) {
DraggableComponent object = new DraggableComponent(o, editorIndex); //Creates a draggableComponent
this.add(object);//Adds this component to main container
object.setOverbearing(true); //On click ,this panel gains lowest z-buffer
object.setSize(48, 48);
object.setLocation(o.x - 23, o.y - 23);
object.setBackground(Color.WHITE);
this.repaint(); //this = JPanel
}
und die überschriebenen paintcomponent Code
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (isOpaque()) {
if (object.type == 2) { //tarnsition
g.drawImage(transition, 0, 0, this);
} else if (object.type == 1) {
boolean test = g.drawImage(place, 0, 0, this); //place
g.drawString(object.loadTokens(), 3, 27); // 1,2,3,4...
}
}
}
ich versuchte this.revalidate zu nennen - nach für jede Schleife - hilft nicht, die einzige Möglichkeit, die funktioniert, ist irgendwie mit dem Fenster zu bewegen, seltsam, besteht dieses Problem nur @ Windows mein Kollege dies entwickelt genau dieselbe Anwendung unter Linux, und er erlebt keine grafischen Probleme.
Ich weiß, dass es eine Menge Themen wie diese gab, aber ich war ehrlich gesagt nicht in der Lage, die Lösung herauszufinden.
Danke für die Antwort, OSIRIS
Vielleicht 'pack()' wird es lösen. Andernfalls poste ein [SSCCE] (http://sscce.org/). –