Jak mogę ograniczyć szerokość widoku JScrollPanel
? Nie chcę, aby poziome przewinięcie miało miejsce w każdym przypadku. Próbowałem dostarczyć własne JViewport
, ale to niewiele pomaga.Ogranicz szerokość widoku JScrollPane
private static class WidthRestrictingViewport extends JViewport {
private Container contents;
public WidthRestrictingViewport(final Container cnts) {
contents = cnts;
}
@Override
public Dimension getPreferredSize() {
if (getParent() instanceof JScrollPane) {
JScrollPane sp = (JScrollPane) getParent();
return new Dimension(sp.getWidth(), contents.getHeight());
}
return super.getPreferredSize();
}
@Override
public Dimension getMaximumSize() {
return getPreferredSize();
}
}
I kod, który tworzyć JScrollPane
Container fpdp = ....
JScrollPane sp = new JScrollPane();
sp.setViewport(new WidthRestrictingViewport(fpdp));
sp.setViewportView(fpdp);
contents
instancji, że dostawa ma maksymalną szerokość, jednak chcę jej szerokość będzie nie więcej niż JScrollPane
szerokość tak poziome przewijanie przyzwyczajenie się zdarzyć. Co ja robię źle?
Nie rozumiem pytania. Co powinno się stać z zawartością 'JScrollPane', gdy jest szerszy niż rzeczywisty rozmiar' JScrollPane'. Po prostu odciąć? W takim przypadku możesz rozważyć właśnie uczynienie paska przewijania niewidocznym ('JScrollPane # getHorizontalScrollBar # setVisible (false)'); – Robin
@Robin, Nie obcięty. Zmniejsz szerokość widoku do szerokości okna przewijania. Wyobraź sobie panel z układem granicznym i zawartością umieszczonymi w środku. Ale w tym przypadku szerokość tylko zawartości jest ograniczona szerokością panelu, a wysokość zawartości może rosnąć zgodnie z potrzebami (z dodawaniem paska przewijania). –
Nie uważam, że odpowiedzialność za "ograniczenie widoków", jakie może osiągnąć "JViewPort", dotyczy raczej samego widoku. Spójrz na interfejs ['Scrollabe'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html), w szczególności [' Scrollable # getScrollableTracksViewportWidth'] (http : //docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html#getScrollableTracksViewportWidth%28%29) – MadProgrammer