Beliebtes Problem: Scrollbar in JTextArea

JavaKüken007

Neues Mitglied
Hallo liebe Javeliebhaber 🙂,

ich als Neuer in der Welt des Java, scheitere momentan an der Umsetzung mit dem Komponenten JScollPane. ;(
Ich versuche momentan einen ganz einfachen kleinen Texteditor zu erstellen, doch an den Scrollbars scheitere ich immer wieder -.-
Ich würde mich sehr über ein paar Lösungsvorschläge oder überhaupt Erklärungen, wie man eine Scrollbar einbaut, freuen!
Google konnte mir einfach nicht weiterhelfen ;__;
Hier mein bisheriger Quelltext, in den ich nun auch eine Scrollbar implementieren möchte...

[JAVA=154]
import javax.swing.*;
import java.io.*;
import java.awt.*;

public class Texteditor extends JFrame
{
Font Fünfzig, Zwanzig;
JTextArea TextAreal;
ActionLauscher Lauscher;
JMenuBar MenuBar;
JMenu Datei, Schrift, Hintergrund, Einfügen;
JMenuItem Speicherni, Öffneni, Neu, Farbe, Schriftart, Zw, Fünf;
String m_dateiname,m_aktText;
JScrollPane scrollPane = new JScrollPane(TextAreal);

public Texteditor()
{
super();

Zwanzig = new Font ("Zwanzig", Font.BOLD, 20); Fünfzig= new Font ("Fünfzig", Font.BOLD, 50);
TextAreal = new JTextArea();
MenuBar = new JMenuBar();
Datei = new JMenu("Datei"); Schrift = new JMenu("Schrift"); Hintergrund = new JMenu("Hintergrund"); Einfügen = new JMenu("Einfügen");
Speicherni = new JMenuItem("Speichern"); Öffneni = new JMenuItem("Öffnen"); Neu = new JMenuItem("Neu");
Farbe = new JMenuItem("Schriftfarbe ändern"); Schriftart = new JMenuItem("Schriftart ändern");
Zw = new JMenuItem("Zwanzig"); Fünf = new JMenuItem("Fünfzig");
Lauscher = new ActionLauscher();

this.add(TextAreal, BorderLayout.CENTER);
this.add(MenuBar, BorderLayout.NORTH);
MenuBar.add(Datei); MenuBar.add(Schrift); MenuBar.add(Hintergrund); MenuBar.add(Einfügen);
Datei.add(Speicherni); Datei.add(Öffneni); Datei.add(Neu);
Schrift.add(Farbe);Schrift.add(Zw); Schrift.add(Fünf); Schrift.add(Schriftart);

Speicherni.addActionListener(Lauscher);
Öffneni.addActionListener(Lauscher);
Farbe.addActionListener(Lauscher); Zw.addActionListener(Lauscher); Fünf.addActionListener(Lauscher); Schriftart.addActionListener(Lauscher);
Zw.addActionListener(Lauscher); Fünf.addActionListener(Lauscher);

this.setBounds(0, 0, 600, 600);
this.setVisible(true);
}


void dateiSpeichern()
{
int zeichen,i;
FileDialog d = new FileDialog(this,"Text speichern...",FileDialog.SAVE);
d.show();
m_dateiname = d.getFile();
if(m_dateiname == null)
return;
try
{
File ausgabedatei = new File(m_dateiname);
FileWriter ausgabe = new FileWriter(ausgabedatei);
m_aktText = TextAreal.getText();
for(i = 0; i < m_aktText.length(); i++)
{
zeichen = (int) m_aktText.charAt(i);
ausgabe.write(zeichen);
}
ausgabe.close();
}
catch(IOException e)
{
System.out.println("Fehler beim Schreiben der Datei " + m_dateiname
+ "\n");
m_dateiname = null;
}
}

void dateiLaden()
{
FileDialog d = new FileDialog(this,"Text laden...",FileDialog.LOAD);
d.show();
m_dateiname = d.getDirectory();
m_dateiname += d.getFile();
if(m_dateiname == null)
return;
StringBuffer lesepuffer= new StringBuffer();
try
{
File eingabedatei = new File(m_dateiname);
FileReader eingabe = new FileReader(eingabedatei);
char zeichen;
int gelesen;
int zeilen = 0;
boolean weiter = true;
while(weiter)
{
gelesen = eingabe.read();
if(gelesen == -1)
{
weiter = false;
continue;
}
zeichen = (char) gelesen;
lesepuffer.append( zeichen);
}
eingabe.close();
m_aktText = new String(lesepuffer);
TextAreal.setText(m_aktText);
TextAreal.setCaretPosition(0);
}
catch(EOFException e)
{
}
catch(FileNotFoundException e)
{
System.out.println("Datei nicht vorhanden oder lesbar!\n");
m_dateiname = null;
}
catch(IOException e)
{
System.out.println("Fehler beim Lesen der Datei " + m_dateiname +
"\n");
m_dateiname = null;
}

}

public class ActionLauscher extends Thread implements ActionListener
{
public void actionPerformed (ActionEvent e)
{
if(e.getSource()==Speicherni)
{
dateiSpeichern();
}
if(e.getSource()==Öffneni)
{
dateiLaden();
}
if(e.getSource()==Farbe)
{
TextAreal.setForeground(Color.green);
}
if(e.getSource()==Zw)
{
TextAreal.setFont(Zwanzig);
}
if(e.getSource()==Fünf)
{
TextAreal.setFont(Fünfzig);
}
}
}


public static void main(String[] args)
{
Texteditor Tina= new Texteditor();
}
}
[/code]

Es wäre sehr lieb,wenn mir jemand helfen würde 🙂
Mfg, Leo :toll:
 
statt
[Java]
this.add(TextAreal, BorderLayout.CENTER);
[/Java]

nimmst du
[Java]
this.add(new JScrollPane(TextAreal), BorderLayout.CENTER);
[/Java]

Damit liegt deine JTextArea in einem scrollbaren bereich.
 
WUHA! Sehr vielen Dank!
Jetzt muss ich nur noch hinkriegen,dass das Fenster eine feste Größe hat, also das der Text automatisch in die nächste Zeile springt, wenn er den Rand erreicht o.o :rtfm:
 

Neue Themen


Zurück
Oben