Frage

Ich habe eine Java -Anwendung, die JTextFields @ runtime zu jpanel hinzufügt. Grundsätzlich klickt der Benutzer auf eine Schaltfläche und neu JTextField wird hinzugefügt. Klickt erneut hinzu ...

Jedes neue JTextField befindet sich direkt unter dem vorherigen. Offensichtlich habe ich bald keinen Platz mehr, also versuche ich, JScrollPane zu verwenden, und dort beginnt das Hölle, weil es einfach nicht funktioniert, egal was ich versuche.

  1. Klicken Sie mit der rechten Maustaste auf JPanel und legen Sie sie in den Bildlaufbereich ein. Hat nicht funktioniert.
  2. Nachdem ich einige Beispiele gelesen hatte, wurde mir klar, dass ich JPanel als Argument für JscrollPane Constructor haben musste. Was ich über die rechte Klicken auf Scrollpane und CustomizeCode gemacht habe. Weil anscheinend automatisch generierter Code in NetBeans geschützt ist und ich nicht einfach alle diese Erklärungen usw. ändern kann. Funktioniert immer noch nicht.
  3. Ich habe versucht, bevorzugte Gröze für JPanel und/oder Jscrollpane, half nicht geholfen.
  4. JscrollPane ist ein Kind von Let Let Lets tal it tabjpanel (was wiederum eine Registerkarte der Registerkartenpane ist). Ich habe versucht, mich mit ihren Beziehungen anzulegen, und habe im Grunde jede mögliche Art der Elternschaft zwischen JFrame, JPanel (Holding Textfields), Tabjpanel und JScRollPane versucht, aber nichts hat funktioniert.
  5. Ich habe auch die VerticalScrollbar "immer sichtbar" gemacht. Ich sehe also die Scrollbar, es ist nur so, dass JPanel mit JTextFields sie nicht beeinflusst.
  6. Wenn es zu viele JTextFields gibt, die ich "unter" den unteren Rand von Jpanel gehen, kann ich sie nicht mehr sehen.

Der Code zum Hinzufügen neuer jTextFields ist so, in einem Fall ist er relevant.

JTextField newField = new JTextField( columns );
Rectangle coordinates = previousTextField.getBounds();
newField.setBounds(coordinates.x , coordinates.y + 50, coordinates.width, coordinates.height);

JPanel.add(newField);
JPanel.revalidate();
JPanel.repaint();

Entschuldigung für einen langen Beitrag Ich versuche nur, so viele Informationen wie möglich zu liefern, denn ich weiß nicht, was genau relevant ist und was nicht. Danke im Voraus :)

War es hilfreich?

Lösung

Da es jetzt eine andere Antwort gibt, füge ich auch meinen Vorschlag hinzu.

Das klingt genau nach einem Problem, um a zu verwenden JTable mit einer einzelnen Spalte. JList ist Noch nicht bearbeitbar (und könnte es nie sein).

JTable Würde die Layoutprobleme für Sie behandeln, und Sie können problemlos über die Tabelle auf die Werte zugreifen.

Verwenden Sie Ihre eigenen TableModel (eine einfache Vector sollte in Ihrem Fall ausreichen) und Werte hinzuzufügen.

Andere Tipps

Eine Option, die Sie haben, ist die Verwendung a LayoutManager, anstatt die Grenzen direkt auf die Komponenten festzulegen. Um dies zu testen, eine einfache Einzelspalte Gitterstruktur Mit der Ausrichtung auf vertikal sollte das Konzept beweisen.

panel.setLayout(new GridLayout(0,1));

Null in der rows Mit dem Param können Zeilen nach Bedarf zum Layout hinzugefügt werden.

Ich mache diese Möglichkeit, eine Scrollpane hinzuzufügen, ein Panel zu erstellen und mit wenigen Komponenten zu füllen, dann eine Scrollpane in der Komponente zu erstellen, die Sie hinzufügen möchten, schneiden und fügen Sie das Bedienfeld ein, in dem alle Ihre Details hineinfallen, und ändern Sie die Scrollpane. Da die Komponenten einen größeren Raum als der eine sichtbare rechte Klicken Sie auf die Scrollpane und wählen Sie diesen Container aus, können Sie die Größe der Scrollpane erhöhen und so viele Komponenten hinzufügen, wie Sie haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top