Suponiendo que desea todo el panel que contiene la etiqueta como el título sea visible:
Container parent = titleLabel.getParent();
parent.scrollRectToVisible(parent.getBounds());
No hay necesidad de acceder a la ventana gráfica que contiene/scrollPane excepción (siempre hay una excepción, ¿no él :-)
- el componente de la scrollRectToVisible se invoca en cuenta una implementación personalizada (como componentes de texto fi
- i f la ubicación predeterminada alcanzado por este método no es a su gusto
Editar
un fragmento de código para @MadProgrammer :-) - pero demasiado perezoso para eliminar todo rastro de SwingX, asi que aquí vamos:
final JLabel last = new JLabel("I'm the last");
int maxRow = 20;
int maxColumn = 10;
JComponent content = new JPanel(new GridLayout(maxRow, maxColumn));
for (int row = 0; row < maxRow; row++) {
for (int column = 0; column < maxColumn; column++) {
JComponent parent = new JPanel();
JLabel label = new JLabel("i'm in " + row + "/" + column);
if (row == (maxRow - 1) && column == (maxColumn - 1)) {
label = last;
last.setBorder(BorderFactory.createLineBorder(Color.RED));
}
parent.add(label);
content.add(parent);
}
}
JXFrame frame = wrapWithScrollingInFrame(content, "scroll");
Action action = new AbstractAction("scrollLastVisible") {
@Override
public void actionPerformed(ActionEvent e) {
last.scrollRectToVisible(last.getBounds());
}
};
addAction(frame, action);
show(frame, frame.getPreferredSize().width/2, frame.getPreferredSize().height/2);
He encontrado una solución y funciona bien lo que hice es, tengo la posición Y de la etiqueta de cabecera que necesito y luego llamar al método de la JScrollPane, JScrollPane siguientes aparatos. getViewport(). setViewPosition (punto nuevo (0, [posición Y de la etiqueta del encabezado])); – Harsha