SWING JScrollPane taucht nicht auf

  • Themenstarter Themenstarter Samuel
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Samuel

Gast
Bin och sehr am anfang, und lese in den Sun Helppages rum, was mich verwirrt ist, ich hab ein nettes Textfenster, Button klick erzeugt eintrag, das Zeug, was man halt so tut, wenn man sich damit vertraut macht, was aber nicht geht und mich verwirrt, ist das angeblich "leichte" benutzen der Scrollbars.
Wie beschrieben müsste die Zeile
Code:
JScrollPane sp = new JScrollPane(jTextArea);
add(sp,null);
sp.setBounds(new java.awt.Rectangle(13,28,189,173));
Scrollbars an jTextarea anhängen, diese sind aber nicht sichtbar, wenn Textfeld voll wird. Es wird kein Layoutmanager verwendet, liegt es daran?
 
Samuel hat gesagt.:
..ich hab ein nettes Textfenster, Button klick erzeugt eintrag,
..Scrollbars an jTextarea anhängen, diese sind aber nicht sichtbar, wenn Textfeld voll wird.
Es wird kein Layoutmanager verwendet..
Normalerweise sollte man immer einen Layoutmanager verwenden.
Es liegt aber nicht daran, denn bei mir funzt es:
Code:
//package layout;
/*
 * TextScroll2.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TextScroll2 extends JFrame implements ActionListener{
    private JTextArea jTextArea;
    private JButton bt;
    public TextScroll2() {
        super("TextScroll2");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 300);
        setLocationRelativeTo(null);
        setLayout(null);
        bt = new JButton("Eintrag");
        bt.setBounds(0,0,100,25);
        add(bt);
        bt.addActionListener(this);
        jTextArea = new JTextArea();
        JScrollPane sp = new JScrollPane(jTextArea);
        add(sp);
        sp.setBounds(new Rectangle(13,28,189,173));
    }
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == bt)
            jTextArea.append("test test test test test test test test test \n");
    }
    public static void main(String args[]) {new TextScroll2().setVisible(true);}
}
 
Also bei mir sieht es so aus:

Code:
jTextArea = new JTextArea();
			jTextArea.setBounds(new java.awt.Rectangle(10,10,200,200));
			jTextArea.setLineWrap(true);
		
			jTextArea.setWrapStyleWord(true);
			JScrollPane sp = new JScrollPane(jTextArea);
			add(sp,null);
			sp.setBounds(new java.awt.Rectangle(150,0,200,200));

Aber es geht nicht
 
Sorry, bin undeutlich.
Es kommt kein Scrollbalken, das Textfeld ist ok.

Benutze ich bei sp kein Set Bounds fehlt auch das Textfeld.
so wie oben sehe ich aber Textfeld, welches nicht scrollt
 
Es werden auch nur dann ScrollBars angezeigt, wenn welche benötigt werden..

Das is dir schon klar oder?
 
Das liegt am setBounds of der Textarea. Wenn du mit setBounds die Größe festlegst kann die Komponente sich nicht mehr variabel vergrößern, und daher zeigt auch die ScrollPane keine Scrollbalken an.
 
Samuel hat gesagt.:
Also bei mir sieht es so aus:

Code:
jTextArea = new JTextArea();
			jTextArea.setBounds(new java.awt.Rectangle(10,10,200,200));
			jTextArea.setLineWrap(true);
		
			jTextArea.setWrapStyleWord(true);
			JScrollPane sp = new JScrollPane(jTextArea);
			add(sp,null);
			sp.setBounds(new java.awt.Rectangle(150,0,200,200));

Aber es geht nicht
Das kann ja aich nicht gehen, es hat ja keine Beine.
Mein Beispiel hat wenugstens Beine, öh, ich meine es kann laufen,
àoch, es hat doch main Methode und alles drum -dran,
..aaah
 
Ja die hat es auch, aber ich hab die Felder mit Visaul Editor erstellt, daher sind da seltsame Formationen und ich hab da direkt reingeschmiert.
Ich baue es mal neu auf und poste es
 
Hm, jetzt geht es, kann garnicht sagen, woran es lag.

Dafür hab ich folgendes Problem:

Ich dachte JWindow ist ein Fenster nur ohne die Titelzeile.

Mit folgendem Code erzeuge ich ein TextFeld

Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class windowX extends JWindow {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// XXX Auto-generated method stub
		new windowX();
	}
	
	public windowX(){
		setSize(300,300);
		getContentPane().setLayout(null);
		
		JTextField tf = new JTextField();
		
		tf.setBounds(10,10,50,50);

		add(tf);
		
		setVisible(true);
	}

}

Kann es aber nicht benutzen, woran liegt das? extende ich von JFrame, geht es Problemlos, aber bei JWindow kann ich Buttons klicken und Bilder laden, aber ich kriegs es nicht hin ein Textfeld zu nutzen?
 
Entweder musst du einen sichtbaren owning frame beim Anlegen von JWindow angeben,
oder du musst einen undecorated JFrame anstatt JWindow benutzen.

http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html
JWindow and focus: If you happen to use a JWindow in your GUI, you should know that the
JWindow's owning frame must be visible for any components in the window to get the focus.
By default, if you don't specify an owning frame for a JWindow, an invisible owning frame is created for it.
The result is that components in JWindows might not be able to get the focus.
The solution is to either specify a visible owning frame when creating the JWindow,
or to use an undecorated JFrame instead of JWindow.
 
Dies ist ein wenig verwirrend, ich dachte JFrame erbt von JWindow.
Wofür braucht ein Window dann einen Owning Frame?
 
Hm, unser Prof erzählte uns, dass Window einfach ein undecorated Frame ist.

Sollte man nun auf Window verzichten?
Ich sehe nämlich nicht sonderlich viel Relevanz darin, ausser vielleicht als Splashscreen Funktion

Edit: Relefanz, lol 🙂
 
Hallo

habe ein ganz ähnliches Problem wie anfangs beschrieben nur das ich eine JTable in der JScrollPane habe und nur die Verticale Scrollbar angezeigt wird die Horizontale aber nicht obwohl die Tabelle weit über die ScrollPane hinausgeht

Hier der abschnitt des QuellTexts:
Code:
buchTabelle = new JTable(100,9);
		buchTabelle.getColumnModel().getColumn(0).setHeaderValue("Titel");
		buchTabelle.getColumnModel().getColumn(0).setMinWidth(100);
		buchTabelle.getColumnModel().getColumn(1).setHeaderValue("Author");
		buchTabelle.getColumnModel().getColumn(1).setMinWidth(100);
		buchTabelle.getColumnModel().getColumn(2).setHeaderValue("Verlag");
		buchTabelle.getColumnModel().getColumn(2).setMinWidth(100);
		buchTabelle.getColumnModel().getColumn(3).setHeaderValue("Auflage");
		buchTabelle.getColumnModel().getColumn(3).setMinWidth(100);
		buchTabelle.getColumnModel().getColumn(4).setHeaderValue("ISBN-Nr");
		buchTabelle.getColumnModel().getColumn(4).setMinWidth(100);
		buchTabelle.getColumnModel().getColumn(5).setHeaderValue("Sprache");
		buchTabelle.getColumnModel().getColumn(5).setMinWidth(100);
		buchTabelle.getColumnModel().getColumn(6).setHeaderValue("Seitenzahl");
		buchTabelle.getColumnModel().getColumn(6).setMinWidth(100);
		buchTabelle.getColumnModel().getColumn(7).setHeaderValue("Erscheinungsjahr");
		buchTabelle.getColumnModel().getColumn(7).setMinWidth(100);
		buchTabelle.getColumnModel().getColumn(8).setHeaderValue("Verliehen an");
		buchTabelle.getColumnModel().getColumn(8).setMinWidth(100);
		scrollPane = new JScrollPane(buchTabelle, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,  
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		scrollPane.setBounds(10, 40, 570, 400);
		getContentPane().add(scrollPane);
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben