JScrollPane.setColumnHeaderView - bottom?

1 resposta
_fs

Oi pessoal, boa tarde.

Há uma maneira simples de fazer com que o componente setado em setColumnHeaderView se posicione abaixo da ViewPortView?

Obrigado.

1 Resposta

dudaskank

olá

olha, simples acho que não tanto... você deve fazer uma classe filha de ScrollPaneLayout que posicione do jeito que você precisa aí, ou fazer uma autêntica gambi como essa que segue hehehe:

package teste;

import java.awt.Dimension;
import java.awt.Point;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class TesteScrollHeader extends JFrame {
	private static final long serialVersionUID = 1L;

	public TesteScrollHeader() {
		super("TesteScrollHeader");

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JScrollPane scroll = new JScrollPane();
		JPanel panel = new JPanel() {
			private static final long serialVersionUID = 1L;

			public void paint(java.awt.Graphics g) {
				super.paint(g);
				g.drawLine(0, 0, getWidth(), getHeight());
			};
		};
		JLabel label = new JLabel("header");
		panel.setPreferredSize(new Dimension(640, 480));
		scroll.setPreferredSize(new Dimension(320, 240));
		scroll.setViewportView(panel);
		scroll.setColumnHeaderView(label);
		
		getContentPane().add(scroll);
		pack();
		
		scroll.setLayout(null);
		
		Point p1 = scroll.getViewport().getLocation();
		Point p2 = scroll.getColumnHeader().getLocation();
		Point p3 = scroll.getVerticalScrollBar().getLocation();
		
		p1.y = p2.y;
		p2.y = p1.y + scroll.getViewport().getHeight();
		p3.y = p1.y;
		
		scroll.getViewport().setLocation(p1);
		scroll.getColumnHeader().setLocation(p2);
		scroll.getVerticalScrollBar().setLocation(p3);
	}

	public static void main(String[] args) {
		TesteScrollHeader teste = new TesteScrollHeader();
		teste.setVisible(true);
	}

}

espero que ajude... flw

Criado 10 de julho de 2006
Ultima resposta 11 de jul. de 2006
Respostas 1
Participantes 2