Swing JScrollPane - Header

Status
Nicht offen für weitere Antworten.

redbomber

Bekanntes Mitglied
Hi zusammen, ich versuche gerade ein JPanel in den Header der JScrollPane einzusetzen, aber irgendwie scheitere ich daran.
Kann ich überhaupt irgend ein JPanel in den Header setzen? Wird dieser immer dargestellt oder muss ich irgend etwas beachten?
 
Hey, ich habs jetz hinbekommen, auch wenn ich nichts verändert habe !?
einfach mit

JScrollPane.setColumnHeaderView();
 
aber ich habe dann trotzdem noch eine Frage dazu.

Gerne hätte ich das sich das JPanel in dem Header immer mitbewegt, also es soll immer so groß sein wie mein aktuelles Fenster, bzw. wie der Viewport des Fensters. Bei mir ist es bisher so, daß wenn ich in dem JSrcollPane nach rechts scrolle, dann mein JPanel in dem Header links verschwindet.
 
ich glaub ich habs...also es funktioniert 🙂

ich fange einfach den Event der ScrollBar ab und führe dann folgende Methode auf der JScrollPane aus:

Code:
protected HeaderPanel headerPanel;

public void repositionHeader() {
	this.remove(headerPanel);
	this.setColumnHeaderView(headerPanel);
}
 
ich fange einfach den Event der ScrollBar ab und führe dann folgende Methode auf der JScrollPane aus [...]

Dass das funktioniert halte ich für einen Bug. Dass es in Zukunft noch bzw. heute heute schon mit allen anderen UI-Implementationen funktionieren wird, halte ich für ein Gerücht. 🙂

Wenn Du dem JScrollPane einen eigenen Viewport für den ColumnHeader spendierst, funktioniert's sauber.
Java:
class FixedHeaderViewport extends JViewport {
  @Override
  public void setViewPosition(Point p) {
    super.setViewPosition(new Point(0, 0));
  }

  @Override
  public Dimension getExtentSize() {
    return getSize();
  }
}
Ebenius
 
naja, ich dachte auch schon daß dies eine etwas komische Lösung ist (pfeiff).
Ändere ich gleich mal um. Vielen Dank!!
 
irgendwie klappt das bei mir hinten und vorne nicht.

Die Größe von meinem HeaderPanel stimmt einfach nicht. Wo muss ich die genau festlegen?
Also ich kann ja zum einen die Fenstergröße verändern und zum anderen nach links und rechts scrollen. ABer die Größe meines HeaderPanels stimmt dabei einfach nie.

Java:
public MyPlotScrollPane(Component c, OverviewModel model, Controller controller){
	super(c);
	this.chromeModel = chromeModel;
	headerPanel = new ChromosomeHeaderPanel(this.chromeModel, controller);
	getHorizontalScrollBar().addAdjustmentListener(controller);
	getVerticalScrollBar().addAdjustmentListener(controller);
	this.setViewport(new FixedHeaderViewport());
	this.setColumnHeaderView(headerPanel);
}


Java:
class FixedHeaderViewport extends JViewport {
	  
    public void setViewPosition(Point p) {
	   super.setViewPosition(new Point(0, 0));
    }
	 
	  
    public Dimension getExtentSize() {
	   return getSize();
    }
}

Java:
public HeaderPanel(OverviewModel model, Controller controller){
		this.model= model;
		
// Wie lege ich die größe meines HeaderPanels fest?
		int width = this.model.getWidth_panel();
		int height = this.model.getHeight_Panel();
		int pos_x = this.model.getLocation_panel_X();
		int pos_y = this.model.getLocation_panel_Y();
		
		this.setSize(new Dimension(width,height));
		this.setPreferredSize(new Dimension(width,height));
		this.setBounds(pos_x,pos_y,width,height);
		this.setBackground(Color.white);
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben