So formatieren Sie eine Tabelle in der JOptionpane?
So, ich habe ein Programm, das durchsucht eine Datei zu finden die gewünschte information, die der Benutzer möchte, und ich bin versucht, die Ausgabe in eine schöne Tabelle in der JOptionPane zu machen, leichter zu Lesen, aber ich bekomme immer so etwas wie dieses:
Ich würde gerne die Leitungen zum line-up entsprechend und richtig formatiert, hier ist der code für eine bestimmte Nachricht:
String message=String.format("%-10s|%7s|%14s|%13s|%22s", element,symbol,atomicNumber,atomicMass,valence);
JOptionPane.showMessageDialog(null, "Name |Symbol |Atomic Number |Atomic Mass |# of Valence Electrons \n _________________________________________________________________ \n " + message);
Kann nicht scheinen, um herauszufinden, was ich falsch mache hier, ich habe das exakt gleiche format-code in einer anderen Zuordnung, in der es nur genutzt, das terminal und es funktionierte gut, aber jetzt, dass ich versuche, es in JOptionPane es ist nicht die Formatierung richtig.
Irgendwelche Ideen auf, wie man dieses Problem beheben oder damit es funktioniert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen JTable statt:
Den Unterschied zwischen den Terminals und der Swing-dialog ist, dass erstere eine Feste Breite-schriftart, während die letztere verwendet eine variable Breite schriftart. Zum Beispiel: wenn man sich das Bild, das Sie geschrieben, Sie können sehen, dass das " ich " ist weit weniger breit als das 'm'. Das bedeutet, dass ein String mit 15 Zeichen lang sein, nicht unbedingt nehmen den gleichen Raum wie die anderen Zeichenfolge von der gleichen Länge.
Die richtige Lösung zu formatieren, so etwas im Gange ist, verwenden Sie entweder ein JTable oder eine GridBagLayout. Wenn Sie glücklich sind, verwenden Sie ein Drittanbieter-Bibliothek, die ich empfehlen, sich auf DesignGridLayout.
Könnte man auch die schriftart explizit, aber das würde noch erfordern, dass Sie den code ändern und es sähe ein bisschen archaisch im Rahmen einer Swing-Anwendung.
Im Rahmen einer brute-force-Lösung für die JOptionPane sollten Sie in der Lage, geben Sie ein Array von Objekten verwendet werden, durch die option Bereich. So würde der code so etwas wie:
Dies ist nicht eine sehr gute Lösung ist, aber ich wollte nur demonstrieren die Flexibilität von JOptionPane Anzeige mehrerer Komponenten vertikal organisiert.
Andere Möglichkeit könnte sein, zu spielen mit dem UIManager und ändern Sie die Standard-schriftart für die option Bereich. Der code wäre so etwas wie:
Ich bin mir nicht sicher, ob diese schriftart gilt für alle Komponenten auf die option Fenster oder nur die Knöpfe oder nur der display-Komponenten.
Die JTable wäre der bessere Ansatz für mein Geld.