Die Inhalte meiner JComponent nur regenerieren, nach einer manuellen Größenänderung

Ich versuche herauszufinden, warum meine JComponent aktualisiert, wenn ich manuell ziehen, mein Fenster, aber es spielt nicht aktualisieren, wenn ich rufe repaint oder revalidate. Die Daten werden angezeigt, aber es will einfach nicht zeigen, bis ich manuell in der Größe verändern. Kann jemand ein paar Anregungen geben, was ich tun kann, oder dieses klingt wie es ist nicht ein Swing-problem, seit ich versucht repaint und revalidate?

Einer seltsamen Dinge, die ich bemerkt habe ist, dass wenn ich in diesem code:

sp.setSize(sp.getSize().width, sp.getSize().height+1);
sp.setSize(sp.getSize().width, sp.getSize().height-1);

Wenn die erste Zeile verwendet wird, dann die JComponent wird selbst aktualisieren. Wenn ich keine oder beide dieser Linien wird es nicht, das scheint Bizarr zu mir.

Ich bin im Grunde genommen nur darum, ein JPanel im JInternalFrame in ein JDesktopPane. Es gibt zwei Hauptfunktionen für das, was ich versuche zu tun. Fügt man das neue JPanel und der andere versucht, um es zu aktualisieren, damit die neuen Daten zeigen:

public void addNewSP()
 {
sp = new JInternalFrame("SP");
  sp.setClosable(true);
  sp.setLocation(700, 400); //this should be changed to something based on screen size
  sp.setResizable(true);
  sp.add(popUp);
  this.parentContainer.add(sp, JLayeredPane.DRAG_LAYER);
  sp.pack();
  sp.show();
  sp.setSize(500, 500);
  sp.setPreferredSize(new Dimension(500, 500));
}

public void refreshSP()
 {

  sp.repaint();
  sp.validate();
  sp.repaint();

  sp.validate();
  parentContainer.validate();
  parentContainer.repaint();

  sp.setSize(sp.getSize().width, sp.getSize().height+1);
  sp.setSize(sp.getSize().width, sp.getSize().height-1);
  }
 }

BTW parentContainer ist die JDesktopPane

  • Sie liefert nicht genug Informationen, um alles besser als wilde Vermutungen. Poste bitte ein SSCCE (sscce.org).
  • Leider glaube ich nicht, das würde zu viel gutes in diesem Fall. Ich habe eine harte Zeit, die Isolierung dieses problem. Ich bin wahrscheinlich zu haben, um zu inspizieren, meinen code und versuchen, mehr Dinge, damit ich darstellen kann, eine bessere Frage. Ich wünschte nur, ich wusste, was das manuelle anpassen der Größe war die Berufung in Schwung. Ich denke, dass ich die richtige Anrufe mit validate und repaint, aber nicht in der richtigen Reihenfolge, oder vor Ort 🙁
  • Gut, wissen, dass wir wissen, Sie reden über den internen Rahmen der Beratung anders sein würde. Das ist, warum Sie sollten immer nach einem SSCCE, so dass wir die Zeit nicht vergeuden, zu erraten, was Sie reden. Haben, Lesen Sie bitte den Abschnitt aus dem Swing-tutorial "Wie man die Nutzung von Internen Frames". Das Beispiel zeigt, wie man dynamisch erstellen und hinzufügen von internen frames zu einer desktop-Bereich
InformationsquelleAutor user372304 | 2010-08-30
Schreibe einen Kommentar