Ich habe eine JScrollPane innerhalb einer JTabbedPane Registerkarte. In dieses JScrollPane platziere ich ein JPanel, dessen Hintergrund rot ist und dessen Größe explizit festgelegt ist.JScrollPane Zeichnung Komponenten unter sich
Dies ist, was ich bekommen:
Beachten Sie, dass in dem zweiten Bild, wo der Container-Rahmen der Größe verändert wurde, wird die Komponente unter den Scrollbar Elemente gezogen werden .
Was geht hier vor? Ich habe fast jede Kombination von Layout-Managern für alle beteiligten Komponenten ausprobiert (sowie Komponenten außer JPanel - schließlich möchte ich hier mehrere JEditorPane), und ich kann nichts zeichnen, außer unter einem großen, leeren Rechteck (ist es ein Hintergrund der)
Code:?
In Haupt-JFrame Unterklasse:
// Called once on startup/layout.
public void refreshGUIState() {
for (int i = 0; i < client.getFrameStackLength(); i++) {
InferenceFrame frame = client.getFrame(i);
JScrollPane pane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
JPanel wtf = new JPanel();
pane.setBackground(Color.YELLOW);
wtf.setBackground(Color.red);
wtf.setSize(100,100);
wtf.setPreferredSize(wtf.getSize());
pane.add(wtf);
workspace.addTab(Integer.toString(i), pane);
}
}
public GuiClient() throws CliException, ParticleSourceException {
super("L4 Interactive Prover");
setSize(800,600);
mainArea = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
mainArea.setDividerSize(2);
mainArea.setBackground(Color.DARK_GRAY);
getContentPane().add(mainArea);
/* ... menu bar init ... */
toolspace = new JPanel();
workspace = new JTabbedPane();
mainArea.add(toolspace);
mainArea.add(workspace);
this.validate();
refreshGUIState();
}
Edit: unter dem Verdacht, dass JScrollPane war irgendwie nicht ein Ansichtsfenster, wenn ihr erstes Kind aufgenommen zu schaffen, wie erwartet Ich habe auch den Konstruktor mit drei Argumenten ausprobiert. Gleiches Verhalten.
Re-edit: Außer ich Fehler und links in der add() Anruf. Hoppla. Sieht so aus.
Meine Vermutung ist, dass Sie vergessen haben, das Ding dem Bildlauffenster hinzuzufügen. – Laurel
Ich mache das in der Zeile, die liest "pane.add (wtf);". Der Code ist genau dort ... Und Sie können es in das Bild gezeichnet sehen, es ist nur unter einem Rechteck aus Grau. Damit..... . – BadZen
Wo setzen Sie den Rahmen sichtbar? – Laurel