我对Java非常陌生,所以请对我轻松一点。经过大量研究,我相信我理解JScrollPane
选项默认情况下显示滚动条。我试图在某些现有代码中更改此行为。我相信只需使用VERTICAL_SCROLLBAR_NEVER
更改默认值即可。但是,我很难确定代码中的设置位置。有人可以帮我告诉我此属性的设置位置(或者即使我走在正确的轨道上)吗?
这是我认为与此问题相关的代码段。拆分窗格窗口的右侧有一个滚动条。我想永久隐藏它。
public class LauncherFrame extends JFrame {
private final Launcher launcher;
@Getter
private final InstanceTable instancesTable = new InstanceTable();
private final InstanceTableModel instancesModel;
@Getter
private final JScrollPane instanceScroll = new JScrollPane(instancesTable);
private WebpagePanel webView;
private JSplitPane splitPane;
private final JButton launchButton = new JButton(SharedLocale.tr("launcher.launch"));
private final JButton refreshButton = new JButton(SharedLocale.tr("launcher.checkForUpdates"));
private final JButton optionsButton = new JButton(SharedLocale.tr("launcher.options"));
private final JButton selfUpdateButton = new JButton(SharedLocale.tr("launcher.updateLauncher"));
private final JCheckBox updateCheck = new JCheckBox(SharedLocale.tr("launcher.downloadUpdates"));
public LauncherFrame(@NonNull Launcher launcher) {
super(tr("launcher.title", launcher.getVersion()));
this.launcher = launcher;
instancesModel = new InstanceTableModel(launcher.getInstances());
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(new Dimension(615, 322));
setResizable(false);
initComponents();
setLocationRelativeTo(null);
SwingHelper.setFrameIcon(this, Launcher.class, "icon.png");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
loadInstances();
}
});
}
private void initComponents() {
JPanel container = createContainerPanel();
container.setLayout(new MigLayout("fill, insets dialog", "[][]push[][]", "[grow][]"));
webView = createNewsPanel();
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, instanceScroll, webView);
selfUpdateButton.setVisible(launcher.getUpdateManager().getPendingUpdate());
launcher.getUpdateManager().addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("pendingUpdate")) {
selfUpdateButton.setVisible((Boolean) evt.getNewValue());
}
}
});
updateCheck.setSelected(true);
instancesTable.setModel(instancesModel);
launchButton.setFont(launchButton.getFont().deriveFont(Font.BOLD));
splitPane.setDividerLocation(100);
splitPane.setDividerSize(4);
splitPane.setOpaque(false);
container.add(splitPane, "grow, wrap, span 5, gapbottom unrel, w null:680, h null:350");
SwingHelper.flattenJSplitPane(splitPane);
container.add(refreshButton);
container.add(updateCheck);
container.add(selfUpdateButton);
container.add(optionsButton);
container.add(launchButton);
add(container, BorderLayout.CENTER);
}
*更新*
下面尝试了一些建议,但仍显示滚动条。我将窗口更改为可调整大小的true,这样您可以在减小尺寸时更轻松地看到它。
答案 0 :(得分:1)
创建新的滚动窗格时,可以将滚动条策略传递到the constructor中。
private final JScrollPane instanceScroll = new JScrollPane(instancesTable,
ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
或者您可以保留构造函数调用的原样,并在initComponents()
方法中设置策略(例如)。
instanceScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
答案 1 :(得分:0)
您的splitPane的两个组件是左侧的JScrollPane,而右侧则无法分辨,因为您没有包括该部分代码。
从这两个屏幕截图中,我们只能猜测您有兴趣将组件放在右侧而没有滚动条。
因此,您必须显示createNewPanel()
代码,或者将正确的组件设置为也没有滚动条的JScrollPane。