JScrollPane - keine ScrollBar

barsiq

Mitglied
Hallo, ich bin's wieder mit einer u.U. dummen Frage.

Ich bin dabei einen weiteren Element für unsere Anwendung aufzubauen.
Es handelt sich dabei um ein Panel ("FunkFeld"), auf dem so genannte "Funkfenstern" plaziert sind. Diese lassen sich dazuöffnen, schließen oder zum JInternalFrame umwandeln, wobei diese Funktionen bereits erfolgreich implimentiert sind.

Dieses "FunkFeld" erweitert JComponent und sieht eigentlich ganz easy aus:
Code:
class FunkFeld extends JComponent{

	public FunkFeld(int w, int h) {
		super();
		this.setSize(w, h);
		this.setLayout(null);
		this.setBounds(0, 0, getWidth(), getHeight());
		this.setBackground(Color.RED);//DHP_GUI_Constants.TABPANE_HINTERGRUND);
	}
	protected void paintComponent (Graphics g){
		super.paintComponent(g);
		Graphics2D g2d = (Graphics2D) g;
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		g2d.setColor(this.getBackground());
		g2d.fillRect(0, 0, getWidth(), getHeight());
	}
}

Das FunkFeld ist Member in einer JSCrollPane:
Code:
class FunkComponent extends JScrollPane{

	protected FunkFeld funkFeld;
	
	public FunkComponent(int x, int y, int w, int h, int wmax) {
		super(JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//S_NEEDED);
		this.getViewport().setBackground(DHP_GUI_Constants.TABPANE_HINTERGRUND);
		this.setSize(w, h);
		this.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
		this.setBounds(x, y, getWidth(), getHeight());
		
		funkFeld = new FunkFeld(wmax, h);
		
		this.getViewport().setLayout(null);
		this.getViewport().add(funkFeld);
	}
}

Mein Problem ist, daß dieses SchrollPane den horizontalen ScrollBar nicht darstellen will.
Und das obwohl zum Zeitpunkt der Instanzierung die Größe des FunkFeldes bereits größer ist als die von ScrollPane.

Es sieht dabei wie angehängt aus und beschäftigt mich schon irgendwie zu lange :(
 

Anhänge

  • Clipboard02.jpg
    Clipboard02.jpg
    33,8 KB · Aufrufe: 47
Moin!
Du musst eine PreferredSize für dein Funkfeld setzen! Dann klappt es auch..

So nebenbei, warum machst du:
Code:
getViewport().setLayout(null);
getViewport().add(funkFeld);

Sehe ich im Moment keinen Sinn bei dir. so würde es eigentlich gemacht werden..
Code:
setViewportView(funkFeld);

*grüssle*
MeinerEiner
 
Zurück