Swing 2 JTextArea parrallel scrollable

Bitte aktiviere JavaScript!
Guten Tag,
ich habe nun knapp einen Tag damit verschwendet um dieses Problem zu lösen.
Bedauerlicherweise bin ich nicht weit gekommen.

Java:
//JTextArea
JTextArea myz = new JTextArea();
myz.setName("myzeile");
myz.setEditable(false);
myz.setBounds(0, 0, 20, high - 240);
myz.setText("1-\n2-\n3-\n"); //das wird später automatisch erstellt
      
JTextArea myt = new JTextArea();
myt.setName("mytext");
myt.setBounds(30,0, width - 170, high - 240);
myt.addKeyListener(this);
      
JScrollPane msp = new JScrollPane();
msp.add(myt);
msp.add(myz);
msp.setBounds(50,10, width - 140, high - 200);
msp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
contentPane.add(msp);
Ich versuche eine Art Programmierumgebung zu erstellen und myz soll auf den Fehler verweisen,
sowie die Zeile angeben.
Vielen dank für die Hilfe schon mal.
 
Zuletzt bearbeitet von einem Moderator:
Entschuldige bitte.
Das Problem ist die Tatsache, dass es nicht länger "scrollable" bleibt. Weiterhin ist das Textfeld hinter einem grauen irgendetwas.
So funktioniert es jedenfalls nicht =).
Die Zielfunktion ist die Programmierumgebung, wenn es also andere bessere Ideen gibt
 
Du brauchst 2 JScrollPanes und musst entweder
a) die beiden Scrollbares auf das selbe Model zeigen lassen (bedeutet du hast 2 Scrollbares die synchron sind)
b) die Scrollbar der einen JScrollPane mit der Scrollbar der anderen überschreiben (bedeutet du hast eine Scrollbar für beide)
Java:
JFrame frame = new JFrame();
frame.setSize(1000, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JTextArea area = new JTextArea("...");
JScrollPane leftPane = new JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

JTextArea rightArea = new JTextArea("...");
JScrollPane rightPane = new JScrollPane(rightArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

// Nur eine Scrollbar
//rightPane.setVerticalScrollBar(leftPane.getVerticalScrollBar());

// 2 Scrollbars
rightPane.getVerticalScrollBar().setModel(leftPane.getVerticalScrollBar().getModel());

JPanel contentPane = new JPanel();
contentPane.setLayout(new GridLayout(1, 2));
contentPane.add(leftPane);
contentPane.add(rightPane);


frame.add(contentPane);

frame.setVisible(true);
 
Ich habe es nun angepasst. Es sieht nun zwar richtig aus, jedoch will noch immer nicht "scrollen". Der Scrollbutton erscheint
zwar, so wie man es erwarten würde, lässt sich aber nicht herunterziehen, da er verschwindet.
Bis hierhin Danke =).


Java:
JTextArea myz = new JTextArea();
myz.setName("myzeile");
myz.setEditable(false);
myz.setText("1-\n2-\n3-\n4-\n5-\n6-\n7-\n8-\n9-\n10-\n11-\n12-\n13-\n14-\n15-\n");

JScrollPane leftPane = new JScrollPane(myz, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
leftPane.setBounds(10, 10, 45, high - 200);
leftPane.setAutoscrolls(true);

JTextArea myt = new JTextArea();
myt.setName("mytext");
myt.addKeyListener(this);

JScrollPane rightPane = new JScrollPane(myt, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
rightPane.setVerticalScrollBar(leftPane.getVerticalScrollBar());
rightPane.setBounds(55,10, width - 170, high - 200);
rightPane.setAutoscrolls(true);

contentPane.add(leftPane);
contentPane.add(rightPane);
 
Zuletzt bearbeitet von einem Moderator:
Ich zitiere:
a) die beiden Scrollbares auf das selbe Model zeigen lassen (bedeutet du hast 2 Scrollbares die synchron sind)
rightPane.getVerticalScrollBar().setModel(leftPane.getVerticalScrollBar().getModel());
Und: benutze bitte Code-Tags (entweder in der Toolbar des Editors auf die drei Punkte klicken und dann Code auswählen, oder einfach im Editor den Code direkt so einfügen [code=Java]Dein Code[/code])
 
Ich weiß zwar nicht genau, was du mit den Code-Tags meinst, aber ich werde das schon heraus finden.
Was meine Probleme anbelangt, so hätte ich die automatische Zeilenaufzählung einfach rein feuern sollen.
Vielen Dank für eure Hilfe.
 
Ich weiß zwar nicht genau, was du mit den Code-Tags meinst, aber ich werde das schon heraus finden.
Wenn Du Deinen Code hier einfügst, erscheint der erstmal unformatiert:

System.out.println();

Machst Du Code-Tags außenrum:
[code=Java]
System.out.println();
[/code]

Dann erscheint das so:
Java:
System.out.println();
Das hat nicht nur den Vorteil, dass Einrückungen etc. beibehalten und der Code mit Syntax-Highlighting dargestellt wird, sondern führt auch dazu, dass die Darstellung nicht vom Forensystem fehlinterpretiert wird. Fügst Du z. B. Code ein, der einen Arrayindex i verwendet, dann interpretiert der Editor das [i] als Formatangabe (kursiv), der Text verschwindet und der Rest wird kursiv gesetzt.
 
Gibt es eigentlich einen Grund dafür, dass du keinen LayoutManager verwendest sondern mit setBounds arbeitest? Bisher seh ich da noch keinen Grund für
 
Ich werde es mir versuchen zu merken und beim nächsten mal einsetzen. Momentan bin ich sehr zufrieden mit meinem Layout.
Das wird jetzt nicht geändert, denn jetzt funktioniert es erstmal. =)
 
ja, genau so was schreibe ich gerade, aber ich bleibe jetzt bei meiner Lösung! Nach allem habe ich jetzt sehr lange dran gesessen
und es ist auch sehr interessant, da ich sehr viel lerne.
Dennoch gucke ich mal was er alles anders gemacht hat.
Danke!
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben