Swing JScrollPane bekommt keine ScrollBars

henpara

Bekanntes Mitglied
Guten Morgen,

ich habe mit Eclipse (Plugin Jigloo) eine GUI entworfen. Darin befindet sich eine Textarea von einer JScrollPane umschlossen.

Texte in die JTextArea schreiben macht keine Probleme, allerdings werden Textstücke abgeschnitten, wenn sie über die Größe der JScrollPane gehen, ohne daß zusätzlich ScrollBars erscheinen.

Hier noch der von Jigloo erstellte Code:

Java:
			{
				TextPanel = new JPanel();
				GridLayout TextPanelLayout = new GridLayout(1, 1);
				TextPanelLayout.setHgap(5);
				TextPanelLayout.setVgap(5);
				TextPanelLayout.setColumns(1);
				TextPanel.setLayout(TextPanelLayout);
				this.add(TextPanel, new AnchorConstraint(231, 971, 985, 31, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));
				TextPanel.setPreferredSize(new java.awt.Dimension(376, 226));
				{
					jScrollPane1 = new JScrollPane();
					TextPanel.add(jScrollPane1);
					jScrollPane1.setViewportView(logTA);
					jScrollPane1.setPreferredSize(new java.awt.Dimension(366, 218));
					{
						logTA = new JTextArea();
						jScrollPane1.setViewportView(logTA);
						logTA.setText("Log");
						logTA.setEditable(false);
						logTA.setPreferredSize(new java.awt.Dimension(420, 255));
					}
				}
			}

mfG
henpara
 
Hallo hen,

also bei mir bereitet der Code keinerlei Probleme --> Scrollbars werden angezeigt.
Auch vom Inhalt her seh ich eigentlich keinen Fehler (aber es ist noch früh am morgen.. das muss nix heißen ;D)

Die einzige Veränderung, die ich vorgenommen habe, war, dass ich aus

Java:
this.add(TextPanel, new AnchorConstraint(231, 971, 985, 31, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));

Java:
this.add(TextPanel);
gemacht habe, da mir die Klasse "AnchorConstraint" nicht bekannt ist. Vielleicht liegt es daran?
 
hm... dann wäre es vielleicht interessant den restlichen Code noch zu sehen.
Habe es daheim auch nochmal getestet, und auch dort ging es ohne probleme =/
 
ok, hier der ganze Code:
Java:
package gui;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 * This code was edited or generated using CloudGarden's Jigloo
 * SWT/Swing GUI Builder, which is free for non-commercial
 * use. If Jigloo is being used commercially (ie, by a corporation,
 * company or business for any purpose whatever) then you
 * should purchase a license for each developer using Jigloo.
 * Please visit [url=http://www.cloudgarden.com]Cloud Garden (Java Resources)[/url] for details.
 * Use of Jigloo implies acceptance of these licensing terms.
 * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
 * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
 * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
 */
public class RepmmPanel extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel logPanel;
	public JTextArea logTA;
	private JScrollPane jScrollPane1;
	private JButton jButton6;
	private JButton jButton5;
	private JButton jButton4;
	private JButton jButton3;
	private JButton jButton1;
	private JButton jButton2;
	private ActionListener l1;
	private JPanel buttonP;
	private JPanel jPanel1;
	private JButton startB;
	private JCheckBox lCB;
	private JCheckBox hCB;
	private JCheckBox kCB;
	private JPanel cbPanel;
	public RepmmPanel() {
		super();
		initGUI();
	}

	private void initGUI() {
		try {
			{
				this.setPreferredSize(new java.awt.Dimension(800, 600));
				BoxLayout thisLayout = new BoxLayout(this, javax.swing.BoxLayout.Y_AXIS);
				this.setLayout(thisLayout);
				this.setSize(800, 600);
				{
					cbPanel = new JPanel();
					FlowLayout cbPanelLayout = new FlowLayout();
					cbPanel.setLayout(cbPanelLayout);
					this.add(cbPanel);
					cbPanel.setPreferredSize(new java.awt.Dimension(800, 92));
					{
						jPanel1 = new JPanel();
						cbPanel.add(jPanel1);
						GridLayout jPanel1Layout = new GridLayout(3, 1);
						jPanel1Layout.setHgap(5);
						jPanel1Layout.setVgap(5);
						jPanel1Layout.setColumns(1);
						jPanel1Layout.setRows(3);
						jPanel1.setLayout(jPanel1Layout);
						jPanel1.setPreferredSize(new java.awt.Dimension(183, 89));
						{
							kCB = new JCheckBox();
							jPanel1.add(kCB);
							kCB.setText("Kidney");
						}
						{
							hCB = new JCheckBox();
							jPanel1.add(hCB);
							hCB.setText("Heart");
						}
						{
							lCB = new JCheckBox();
							jPanel1.add(lCB);
							lCB.setText("Liver");
						}
					}
					{
						buttonP = new JPanel();
						GridLayout buttonPLayout = new GridLayout(3, 3);
						buttonPLayout.setHgap(5);
						buttonPLayout.setVgap(5);
						buttonPLayout.setColumns(3);
						buttonPLayout.setRows(3);
						buttonP.setLayout(buttonPLayout);
						cbPanel.add(buttonP);
						buttonP.setPreferredSize(new java.awt.Dimension(260, 85));

						{
							jButton1 = new JButton();
							buttonP.add(jButton1);
							jButton1.setText("jButton1");
							jButton1.setVisible(false);
						}
						{
							jButton2 = new JButton();
							buttonP.add(jButton2);
							jButton2.setText("jButton2");
							jButton2.setVisible(false);
						}
						{
							jButton3 = new JButton();
							buttonP.add(jButton3);
							jButton3.setText("jButton3");
							jButton3.setVisible(false);
						}
						{
							jButton4 = new JButton();
							buttonP.add(jButton4);
							jButton4.setText("jButton4");
							jButton4.setVisible(false);
						}
						{
							startB = new JButton();
							buttonP.add(startB);
							BorderLayout startBLayout = new BorderLayout();
							startB.setLayout(startBLayout);
							startB.setText("Start");
							startB.setPreferredSize(new java.awt.Dimension(104, 36));
						}
						{
							jButton5 = new JButton();
							buttonP.add(jButton5);
							jButton5.setText("jButton5");
							jButton5.setVisible(false);
						}
						{
							jButton6 = new JButton();
							buttonP.add(jButton6);
							jButton6.setText("jButton6");
							jButton6.setVisible(false);
						}
					}
				}
				{
					logPanel = new JPanel();
					GridLayout logPanelLayout = new GridLayout(1, 1);
					logPanelLayout.setHgap(5);
					logPanelLayout.setVgap(5);
					logPanelLayout.setColumns(1);
					logPanel.setLayout(logPanelLayout);
					this.add(logPanel);
					logPanel.setPreferredSize(new java.awt.Dimension(800, 426));
					{
						jScrollPane1 = new JScrollPane();
						logPanel.add(jScrollPane1);
						jScrollPane1.setViewportView(logTA);
						jScrollPane1.setPreferredSize(new java.awt.Dimension(800, 493));
						jScrollPane1.setAutoscrolls(true);
						{
							logTA = new JTextArea();
							jScrollPane1.setViewportView(logTA);
							logTA.setText("log");
							logTA.setPreferredSize(new java.awt.Dimension(0, 463));
						}
					}
				}
			}
			l1 = new ActionListener() { 
				@Override public void actionPerformed( ActionEvent e ) { 
					cmdStart_ActionPerformed();
				}
			};
			startB.addActionListener(l1);
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	void cmdStart_ActionPerformed() {
		this.logTA.setText("");
	//Blablatuwas
	}
	public void setActStudy() {
		//blablatuwas
	}
}
Das Panel hier erzeugt:
Java:
	public MainPanel(log.Log log, common.Login login, HomePanel hp) {
		super();
		this.login = login;
		this.setVisible(true);
		this.setSize(new Dimension(800,600));

		//Instantiate JPanels:
		setStartpanel(hp);
		dnadispanel = new DnaDisPanel(log, login);
		mtxpanel = new MtxPanel(log, login);
		repmmpanel = new RepmmPanel();
		xtractorpanel = new XtractorPanel();

		//Add Components on the main Panel:
		addTab(starts, getStartp());
		addTab(dnadiss, dnadispanel);
		addTab(mtxs, mtxpanel);
		addTab(repmms, repmmpanel);
		addTab(xtracts, xtractorpanel);
		//Add ActionListeners on the Components:
		this.setVisible(true);
	}

hab rausbekommen, woran es lag:
setPreferredSize für die logTA (also die JTextArea) haben wohl die ScrollBars blockiert.
 
Zuletzt bearbeitet:
auskommentieren von
Java:
logTA.setMaximumSize(new java.awt.Dimension(0, 463));
sollte das Problem beheben.

Einen automatischen Zeilenumbruch könntest du mit
Java:
logTA;.setLineWrap(true);
logTA.setWrapStyleWord(true)
machen, falls du dies benötigst.

Falls dies nicht zum gewünschten Ergebnis führt meld dich nochmal.
Soweit ich das sehe war das Problem, dass die jTextArea noch unter dem JScrollpane weiterging, daher muste die Scrollpane auch keinen Scrollbalken anzeigen

Edit: ich tipp zu langsam :-(
 

Zurück
Oben