我有一个带有滚动 Pane scrlPnAddServer
的选项卡式 Pane tabbedPane_1
,其视口(viewport) View 设置为 pnlAddServer
。如何在滚动 Pane 的可视部分下方添加文本字段或其他项目。 (并允许用户向下滚动以查看项目)目前,项目在超出范围时不会显示。
JTabbedPane tabbedPane_1 = new JTabbedPane(JTabbedPane.TOP);
tabbedPane_1.setBounds(672, 20, 350, 400);
panel.add(tabbedPane_1);
JPanel tab = new JPanel();
tabbedPane_1.add("Build", tab);
tab.setLayout(null);
JPanel tab2 = new JPanel();
tabbedPane_1.add("More...", tab2);
tab2.setLayout(null);
JScrollPane scrlPnAddServer = new JScrollPane();
scrlPnAddServer.setBounds(0, 0, 350, 370);
tab2.add(scrlPnAddServer);
scrlPnAddServer.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
JPanel pnlAddServer = new JPanel();
pnlAddServer.setBounds(0, 0, 350, 370);
scrlPnAddServer.setViewportView(pnlAddServer);
pnlAddServer.setLayout(null);
然后我添加希望用户向下滚动查看的项目:
tfSaveAs = new JTextField("Save As");
tfSaveAs.setBounds(10, 600, 125, 20);
pnlAddServer.add(tfSaveAs);
tfSaveAs.setColumns(10);
最佳答案
利用适当的布局管理器,它能够计算使用 JScrollPane
所需的信息来决定是否应该显示滚动条。
这只是布局管理 API 提供的众多“自动神奇”方面之一
避免使用 null
布局,像素完美布局是现代 UI 设计中的一种幻觉。影响组件个体尺寸的因素太多,您无法控制其中任何一个。 Swing 的设计初衷是与布局管理器一起工作,放弃它们将导致无穷无尽的问题,您将花费越来越多的时间来尝试纠正
关于Java Swing : Allow scroll when textfields are out out of range of scrollpane's view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36522456/