Hallo,
ich hab ein kleines Problem und mach schon länger daran herum, weiss aber leider nicht wie ich das hinbekommen soll. Könnte ne ganz kleine Sache sein, und ich steh vielleicht nur auf dem Schlauch ;(
Ich hab das Programm mal stark abgekürzt und nur die meiner Meinung entscheidenden Dinge stehen gelassen.
Was mein Programm machen soll:
Ich wähle über das Menu eine Text-Datei aus.
Wenn man beim File-Chooser auf "Datei auswählen" drückt wird automatisch folgendes getan:
-Die Zeilenanzahl der Textdatei wird berechnet, für die Größe von zwei Arrays die erstellt werden.
-Die Zeilen werden in ein String-Array geschrieben
-Dann wird ein TextPane-Array erstellt, das mit den Strings aus dem String-Array gefüllt wird
-Das Textpane-Array wird einem Panel hinzugefügt. Dieses Panel bekommt eine ScrollBar und wird in einem GridLayout angezeigt.
Das String-Array und das TextPane-Array werden oben als Klassenvariablen erstellt.
Der "Fehler" der nun auftritt ist, dass ich, wenn ich einen zweiten Text lade, ich mehrere TextPane-Arrays angezeigt bekomme. Ich schätze das Problem liegt daran, dass jedesmal ein neues TextPane-Array erstellt wird und/oder dass jedesmal ein neues Panel erstellt wird. Aber beide kann ich ja erst erstellen, wenn ich weiss wieviele Zeilen mein entsprechender Text hat. Die Zeilenanzahl wird ja erst nach dem Auswählen des Texten berechnet.
Ich hoffe ihr könnt mir folgen. Hier nun mein Code in abstakter Form. An den problematischen Stellen hab ich den Code normal stehen lassen.
Falls ihr bis hierher dabei geblieben seid, erstmal ein herzliches Danke für eure Unterstützung.
Ich hoffe ihr könnt mir weiterhelfen und Danke schonmal im Vorraus.
Grüße,
Doc
ich hab ein kleines Problem und mach schon länger daran herum, weiss aber leider nicht wie ich das hinbekommen soll. Könnte ne ganz kleine Sache sein, und ich steh vielleicht nur auf dem Schlauch ;(
Ich hab das Programm mal stark abgekürzt und nur die meiner Meinung entscheidenden Dinge stehen gelassen.
Was mein Programm machen soll:
Ich wähle über das Menu eine Text-Datei aus.
Wenn man beim File-Chooser auf "Datei auswählen" drückt wird automatisch folgendes getan:
-Die Zeilenanzahl der Textdatei wird berechnet, für die Größe von zwei Arrays die erstellt werden.
-Die Zeilen werden in ein String-Array geschrieben
-Dann wird ein TextPane-Array erstellt, das mit den Strings aus dem String-Array gefüllt wird
-Das Textpane-Array wird einem Panel hinzugefügt. Dieses Panel bekommt eine ScrollBar und wird in einem GridLayout angezeigt.
Das String-Array und das TextPane-Array werden oben als Klassenvariablen erstellt.
Der "Fehler" der nun auftritt ist, dass ich, wenn ich einen zweiten Text lade, ich mehrere TextPane-Arrays angezeigt bekomme. Ich schätze das Problem liegt daran, dass jedesmal ein neues TextPane-Array erstellt wird und/oder dass jedesmal ein neues Panel erstellt wird. Aber beide kann ich ja erst erstellen, wenn ich weiss wieviele Zeilen mein entsprechender Text hat. Die Zeilenanzahl wird ja erst nach dem Auswählen des Texten berechnet.
Ich hoffe ihr könnt mir folgen. Hier nun mein Code in abstakter Form. An den problematischen Stellen hab ich den Code normal stehen lassen.
Java:
public class Klasse{
JFrame frame = new JFrame(); //das fenster erstellen
String[] stringArray;
int Zeilenanzahl = 0;
JTextPane[] textpaneArray;
public Test(){
//frame-Einstellungen
//Menubar öffnen und Aktionen ausführen
FileChooser wählt eine Textdatei aus
Zeilenanzahl wird berechnet
Text wird zeilenweise in ein String-Array geschrieben, dessen Größe über die Zeilenanzahl erstellt wird.
//TextPane Array erstellen, mit der berechneten Zeilenanzahl
textpaneArray = new JTextPane[Zeilenanzahl];
// Das Panel "main" erstellen. In meinem Programm enthält es noch weitere Elemente
JPanel main = new JPanel(new BorderLayout());
// Das Panel "panel" erstellen. Bekommt eine Spalte und "Zeilenanzahl" Zeilen
final JPanel panel = new JPanel(new GridLayout(Zeilenanzahl, 1, 0, 0));
//TextPanes füllen und dem Panel "panel" hinzufügen
for (int i = 0; i < Zeilenanzahl; i++) {
textpaneArray[i] = new JTextPane(new HighlightDocument());
textpaneArray[i].setText(temp = stringArray[i]);
// TextPane dem Panel hinzufügen
panel.add(textpaneArray[i]);
}
//Scrollbar für Panel
JScrollPane scrollbar = new JScrollPane(panel); //"panel" ist das innere Panel
scrollbar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
main.add(scrollbar); //ScrollPane "scrollbar" wird dem äusseren Panel "main" hinzugefügt. "scrollbar" enthält das innere Panel "panel"
frame.add(main, BorderLayout.CENTER); //Das äussere Panel "main" wird dem Fenster hinzugefügt.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.pack(); //ausrichten
Falls ihr bis hierher dabei geblieben seid, erstmal ein herzliches Danke für eure Unterstützung.
Ich hoffe ihr könnt mir weiterhelfen und Danke schonmal im Vorraus.
Grüße,
Doc
Zuletzt bearbeitet: