ich nächsten Teil des Codes habe:Java JScrollPane manchmal nicht erfolgreich Größe verändert
final JList<String> list = new JList<String>(strings);
list.setLayoutOrientation(JList.VERTICAL);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
/* Create scroll pane instance */
JScrollPane scroll = new JScrollPane(list) {
@Override
public Dimension getPreferredSize()
{
BookFrame frame = BookFrame.instance();
Container parent = getParent();
return new Dimension(frame.getWidth(), parent.getHeight() - parent.getComponent(parent.getComponentCount() - 1).getHeight() - 14);
}
};
/* Create button instance */
JButton button = new JButton("Add Directory");
/* Add new panel */
JPanel panel = new JPanel();
panel.add(scroll);
panel.add(button);
Dieser Code wird ausgeführt, wenn Programm startet und manchmal Taste Höhe ein normaler Wert ist (ex. 15), aber manchmal ist es 0. Ich denke, die Problem ist mit JScrollPane-Instanz - es wurde vor JButton-Instanz erstellt - aber ich kann nicht synchronisieren. Ich habe auch versucht, JButton button = ...
vor JScrollPane scroll = ...
hinzuzufügen, aber es funktioniert auch nicht.
Ich bin Newby in Java also sag mir bitte, was ich falsch mache.
Aber wie kann ich meine 'JScrollPane' dynamisch verändern? Wie kann ich das mit 'setVisibleRowCount (...)' machen? – ventaquil
@ventaquil, Jede Komponente, die der MITTE eines JFrames hinzugefügt wird, wird dynamisch skaliert, wenn die Größe des Rahmens geändert wird. Der setVisibleRowCount() ist ein Vorschlag für die Verwendung der pack() -Methode. Lesen Sie den Abschnitt aus dem Swing-Lernprogramm unter [Verwendung von BorderLayout] (http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html), um weitere Informationen und Arbeitsbeispiele zu erhalten. Laden Sie die – camickr
in Ordnung - Problem ist mit 'JPanel'. Wenn ich Scroll um 'getContentPane() addiere, addiere (..)' Methode 'setVisibleRowCount (..)' funktioniert gut. Vielen Dank :) – ventaquil