TextArea und ScrollBar

addamain

Mitglied
Hallo zusammen,

ich habe leider ein kleines Problem, aber ich hoffe dass mir jm von euch Helfen kann...

Ich habe eine TextArea bei der der Textinhalt weiter nach unten hinausgeht - daher brauche ich einen Scrollbalken - google hat mir JScrollBar geliefert.

Meine TextArea sieht so aus:

Java:
private JTextArea taPositionen = null;
jContentPane.add(getTaPositionen(), null);

private JTextArea getTaPositionen() {
	if (taPositionen == null) {
	taPositionen = new JTextArea();
	taPositionen.setBounds(new Rectangle(15, 305, 450, 160));
	}
	return taPositionen;
}

Wie bzw. Was muss ich machen, damit ich rechts neben der TextArea einen Scrollbalken bekommen, mit dem man nach unten Scrollen kann?

Ich bedanke mich schonmal ganz Herzlich bei allen Helfenden 😉

Liebe Grüße, Addamain
 
Ok, habe vergessen den Code von der ScrollBar einzusetzen:

Java:
private JScrollBar jScrollBar = new JScrollBar();
jContentPane.add(getJScrollBar(), null);

private JScrollBar getJScrollBar() {
	if (jScrollBar == null) {
		jScrollBar = new JScrollBar();
		jScrollBar.setBounds(new Rectangle(446, 270, 33, 113));
	}
	return jScrollBar;
}

Habe jetzt gemacht was du geschrieben hast, aber wie muss ich nun vorgehen? Irgendwie komme ich mit den Beispielen ned weiter, die mir Google liefert...

Danke dir aber schonmal vielmals für die schnelle Hilfe.

Grüße, Addamain
 
Du hast jetzt deinen ganzen Code für JScrollBar angepasst, aber du musst nur Zeile 2 so ergänzen, wie es Runtime beschrieben hat (Achtung: mit JScrollPane, nicht JScrollBar):

Java:
private JTextArea taPositionen = null;
jContentPane.add(new JScrollPane(getTaPositionen()), null);
 
private JTextArea getTaPositionen() {
    if (taPositionen == null) {
    taPositionen = new JTextArea();
    taPositionen.setBounds(new Rectangle(15, 305, 450, 160));
    }
    return taPositionen;
}

Du übergibst also deine JTextArea dem Konstruktor von JScrollPane, und schon hat die TextArea einen Scrollbalken! 😉
 
Zuletzt bearbeitet:
Wenn ich

Java:
jContentPane.add(getTaPositionen(), null);

in

Java:
jContentPane.add(new JScrollPane(getTaPositionen()), null);

ändere, dann verschwindet die TextArea - sie wird mir nicht mehr im GUI Editor sowie auch in der Compilierten Form angezeigt...

Habe ich was übersehen?

Danke euch beiden.

Grüße, Addamain
 
Java:
package paketAuftrag;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JScrollBar;
import javax.swing.ScrollPaneConstants;
import java.awt.Font;

public class Hauptfenster extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private Auftrag aktAuftrag = new Auftrag();  //  @jve:decl-index=0:
	private JButton btEnde = null;
	private JLabel jLabel = null;
	private JTextField tfAuftrNr = null;
	private JLabel jLabel1 = null;
	private JLabel jLabel2 = null;
	private JLabel jLabel3 = null;
	private JLabel jLabel4 = null;
	private JLabel lbKdNr = null;
	private JLabel lbAuftrDat = null;
	private JLabel lbKdName = null;
	private JLabel lbAuftrTermin = null;
	private JLabel jLabel5 = null;
	private JLabel jLabel6 = null;
	private JLabel jLabel7 = null;
	private JLabel jLabel8 = null;
	private JLabel lbGesammtWert = null;
	private JButton btNeueSuche = null;
	private JTextArea taPositionen = null;
	private JScrollBar jScrollBar = null;
	private JLabel jLabel9 = null;
	public Hauptfenster() {
		super();
		initialize();
		lbAuftrDat.setVisible(false);
		lbAuftrTermin.setVisible(false);
		lbKdName.setVisible(false);
		lbKdNr.setVisible(false);
		jLabel1.setVisible(false);
		jLabel2.setVisible(false);
		jLabel3.setVisible(false);
		jLabel4.setVisible(false);
		jLabel7.setVisible(false);
		jLabel8.setVisible(false);
		lbGesammtWert.setVisible(false);
		btNeueSuche.setVisible(false);
		taPositionen.setVisible(false);
		jScrollBar.setVisible(false);
	}

	private void initialize() {
		this.setSize(500, 635);
		this.setContentPane(getJContentPane());
		this.setTitle("Auftragverwaltung");
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel9 = new JLabel();
			jLabel9.setBounds(new Rectangle(70, 9, 342, 47));
			jLabel9.setFont(new Font("Dialog", Font.BOLD, 36));
			jLabel9.setText("Auftragsverwaltung");
			lbGesammtWert = new JLabel();
			lbGesammtWert.setBounds(new Rectangle(110, 470, 355, 20));
			lbGesammtWert.setText("lbGesammtWert");
			jLabel8 = new JLabel();
			jLabel8.setBounds(new Rectangle(15, 470, 90, 20));
			jLabel8.setText("Gesammtwert:");
			jLabel7 = new JLabel();
			jLabel7.setBounds(new Rectangle(15, 280, 450, 20));
			jLabel7.setText("Folgende Positionen sind in dem Auftrag enthalten:");
			jLabel6 = new JLabel();
			jLabel6.setBounds(new Rectangle(15, 120, 450, 20));
			jLabel6.setText("Eingabe mit der Entertaste.");
			jLabel5 = new JLabel();
			jLabel5.setBounds(new Rectangle(15, 100, 450, 20));
			jLabel5.setText("Bitte geben Sie eine Auftragsnummer ein und bestätigen Sie Ihre");
			lbAuftrTermin = new JLabel();
			lbAuftrTermin.setBounds(new Rectangle(115, 240, 350, 20));
			lbAuftrTermin.setText("lbAuftrTermin");
			lbKdName = new JLabel();
			lbKdName.setBounds(new Rectangle(115, 180, 350, 20));
			lbKdName.setText("lbKdName");
			lbAuftrDat = new JLabel();
			lbAuftrDat.setBounds(new Rectangle(115, 210, 350, 20));
			lbAuftrDat.setText("lbAuftrDat");
			lbKdNr = new JLabel();
			lbKdNr.setBounds(new Rectangle(115, 150, 350, 20));
			lbKdNr.setText("lbKdNr");
			jLabel4 = new JLabel();
			jLabel4.setBounds(new Rectangle(15, 240, 100, 20));
			jLabel4.setText("Auftragstermin:");
			jLabel3 = new JLabel();
			jLabel3.setBounds(new Rectangle(15, 210, 100, 20));
			jLabel3.setText("Auftragsdatum:");
			jLabel2 = new JLabel();
			jLabel2.setBounds(new Rectangle(15, 180, 100, 20));
			jLabel2.setText("Kundenname:");
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(15, 150, 100, 20));
			jLabel1.setText("Kundennummer:");
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(15, 60, 180, 25));
			jLabel.setText("Auftragsnummer:");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getBtEnde(), null);
			jContentPane.add(jLabel, null);
			jContentPane.add(getTfAuftrNr(), null);
			jContentPane.add(jLabel1, null);
			jContentPane.add(jLabel2, null);
			jContentPane.add(jLabel3, null);
			jContentPane.add(jLabel4, null);
			jContentPane.add(lbKdNr, null);
			jContentPane.add(lbAuftrDat, null);
			jContentPane.add(lbKdName, null);
			jContentPane.add(lbAuftrTermin, null);
			jContentPane.add(jLabel5, null);
			jContentPane.add(jLabel6, null);
			jContentPane.add(jLabel7, null);
			jContentPane.add(jLabel8, null);
			jContentPane.add(lbGesammtWert, null);
			jContentPane.add(getBtNeueSuche(), null);
			jContentPane.add(getTaPositionen(), null);
			jContentPane.add(getJScrollBar(), null);
			jContentPane.add(jLabel9, null);
		}
		return jContentPane;
	}

	private JButton getBtEnde() {
		if (btEnde == null) {
			btEnde = new JButton();
			btEnde.setBounds(new Rectangle(9, 515, 465, 30));
			btEnde.setText("beenden");
			btEnde.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.exit(1);
				}
			});
		}
		return btEnde;
	}

	private JTextField getTfAuftrNr() {
		if (tfAuftrNr == null) {
			tfAuftrNr = new JTextField();
			tfAuftrNr.setBounds(new Rectangle(200, 60, 100, 25));
			tfAuftrNr.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					jLabel6.setVisible(false);
					jLabel5.setVisible(false);
					jLabel1.setVisible(true);
					jLabel2.setVisible(true);
					jLabel3.setVisible(true);
					jLabel4.setVisible(true);
					lbAuftrDat.setVisible(true);
					jLabel7.setVisible(true);
					jLabel8.setVisible(true);
					lbGesammtWert.setVisible(true);
					lbAuftrTermin.setVisible(true);
					lbKdName.setVisible(true);
					lbKdNr.setVisible(true);
					btNeueSuche.setVisible(true);
					taPositionen.setVisible(true);
					jScrollBar.setVisible(true);
					taPositionen.setText("");
					lbAuftrDat.setText("");
					lbAuftrTermin.setText("");
					lbKdName.setText("");
					lbKdNr.setText("");
					lbGesammtWert.setText("");
					taPositionen.setText("");
					aktAuftrag.setAuftrNr(tfAuftrNr.getText());
					aktAuftrag.datenHolen();
					aktAuftrag.kundenName();
					aktAuftrag.positionenDaten();
					int mAnzahl = aktAuftrag.positionenHolen();
					if(mAnzahl!=0)
					{
					lbKdNr.setText(aktAuftrag.getKunden().getKdnr());
					lbKdName.setText(aktAuftrag.getKunden().getKdName());
					lbAuftrDat.setText(aktAuftrag.getAuftrDat());
					lbAuftrTermin.setText(aktAuftrag.getAuftrTermin());
					double mGesamt=0;

					for(int i=0; i<mAnzahl; i++)
					{
						mGesamt=mGesamt+aktAuftrag.getPositionen(i).berechnePosition();
						taPositionen.append(aktAuftrag.getPositionen(i).getArtNr() + "   ");
						taPositionen.append(aktAuftrag.getPositionen(i).getBez() + "   ");
						taPositionen.append(aktAuftrag.getPositionen(i).getMenge() + "x   ");
						taPositionen.append(String.valueOf(aktAuftrag.getPositionen(i).berechnePosition()));
						taPositionen.append("\n");
					}
					lbGesammtWert.setText(String.valueOf(mGesamt) + " €");
					
					}
				}
			});
		}
		return tfAuftrNr;
	}

	private JButton getBtNeueSuche() {
		if (btNeueSuche == null) {
			btNeueSuche = new JButton();
			btNeueSuche.setBounds(new Rectangle(9, 555, 465, 30));
			btNeueSuche.setText("neue Eingabe");
			btNeueSuche.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					lbAuftrDat.setVisible(false);
					lbAuftrTermin.setVisible(false);
					lbKdName.setVisible(false);
					lbKdNr.setVisible(false);
					jLabel1.setVisible(false);
					jLabel2.setVisible(false);
					jLabel3.setVisible(false);
					jLabel4.setVisible(false);
					jLabel7.setVisible(false);
					jLabel8.setVisible(false);
					lbGesammtWert.setVisible(false);
					btNeueSuche.setVisible(false);
					jLabel5.setVisible(true);
					jLabel6.setVisible(true);
					taPositionen.setVisible(false);
					jScrollBar.setVisible(false);
					lbAuftrDat.setText("");
					lbAuftrTermin.setText("");
					lbKdName.setText("");
					lbKdNr.setText("");
					lbGesammtWert.setText("");
					taPositionen.setText("");
				}
			});
		}
		return btNeueSuche;
	}

	private JTextArea getTaPositionen() {
		if (taPositionen == null) {
			taPositionen = new JTextArea();
			taPositionen.setBounds(new Rectangle(15, 305, 425, 155));
		}
		return taPositionen;
	}

	private JScrollBar getJScrollBar() {
		if (jScrollBar == null) {
			jScrollBar = new JScrollBar();
			jScrollBar.setBounds(new Rectangle(440, 305, 20, 155));
		}
		return jScrollBar;
	}


}

Gerne, wenn ihr damit mehr anfangen könnt 😉

Danke für eure Hilfe 😉
 
Java:
jContentPane.add(getTaPositionen(), null);
jContentPane.add(getJScrollBar(), null);
Du hast ja immer noch die JScrollBar. Die kannst du wegschmeissen und
Java:
jContentPane.add(getTaPositionen(), null);
in
Java:
jContentPane.add(new JScrollPane(getTaPositionen()), null);
ändern.
 
Ist das so richtig:

Java:
//jContentPane.add(getTaPositionen(), null);
			//jContentPane.add(getJScrollBar(), null);
			jContentPane.add(new JScrollPane(getTaPositionen()), null);

Wenn ich das so drin stehen habe, dann verschwindet die TextArea und der Scroll Balken...
 
Gib mal die Grösse der JTextArea und des JScrollPanes aus.

Probiere mal
Java:
System.out.println("JTextArea - preferred size: "+textArea.getPreferredSize().width+" x "+textArea.getPreferredSize().height);
System.out.println("JTextArea - size: "+textArea.getSize().width+" x "+textArea.getSize().height);
System.out.println("JScrollPane - preferred size: "+scrollPane.getPreferredSize().width+" x "+scrollPane.getPreferredSize().height);
System.out.println("JScrollPane - size: "+scrollPane.getSize().width+" x "+scrollPane.getSize().height);
Du brauchst dazu aber eine Referenz auf deine JScrollpane.
 
Ich hab grad gemerkt, dass du das Null-Layout nimmst - NULL LAYOUTS SIND BÖSE!
Wie du ein richtiges Layout benutzt findest du hier.
In der FAQ gibts ebenfalls Beiträge zu LayoutManagern.

Du kannst auch einen GUI Builder verwenden, wenns dir zu mühsam wird.
 
Du kannst auch einen GUI Builder verwenden, wenns dir zu mühsam wird.

Ich benutze Eclipse zum Coden, da ist n Visual Editor mit dabei, weiß jetzt grad ned mehr welcher das ist... Der legt halt die "null" Sachen so an wie sie da sind...

Warum ist das Null Layout ned so gut?

Wie komme ich jetzt mit meinem Scrollbalken weiter?

Danke für eure Hilfe 😉

Liebe Grüße, Addamain
 

Zurück
Oben