如何在 Jscrollpane 可见时调整其视口大小?
How to resize the viewport of a Jscrollpanewhile it is visible?
我在调整 jscrollpane 中 jpanel 的大小时遇到问题。这是我的代码:
for (String Id : SearchResultsMap.keySet())
{
JButton IdPanelButton = CreateIdPanelButton(Id);
IdListPanel.add(IdPanelButton);
IdPanelButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
ClearRecordDetails();
setRecordDetails(SearchResultsMap.get(Id));
}
});
}
IdListPanel.setPreferredSize(new Dimension(IdListPanel.getWidth(), (int) (SearchResultsMap.size()* CreateIdPanelButton("").getHeight())));
IdListPanel.validate();
我主要做的是生成一个按钮列表供用户单击,然后会显示一些信息。 CreatIdPanelButton 只是创建一个具有视觉约束的新 jbutton。我遇到的问题是 IdListPanel 没有调整大小,即使我尝试设置首选大小。我还尝试重新验证 jscrollpane,但这不起作用。有人知道在 jscrollpane 视口可见时更新它吗??
问题可能是你初始化了一个指定大小,尝试指定一个大小。
如果不是,您需要显示您引用的代码,因为其他地方可能存在一些错误,我看不到它。
所以我发现了这个问题,当您第一次创建 Jbutton 时,在设置和计算实际高度之前需要一些时间,因此 jbutton 的 getHeight 方法返回 0,因为它尚未设置。所以我通过添加一个常量 jbutton 目标高度
来修复它
我在调整 jscrollpane 中 jpanel 的大小时遇到问题。这是我的代码:
for (String Id : SearchResultsMap.keySet())
{
JButton IdPanelButton = CreateIdPanelButton(Id);
IdListPanel.add(IdPanelButton);
IdPanelButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
ClearRecordDetails();
setRecordDetails(SearchResultsMap.get(Id));
}
});
}
IdListPanel.setPreferredSize(new Dimension(IdListPanel.getWidth(), (int) (SearchResultsMap.size()* CreateIdPanelButton("").getHeight())));
IdListPanel.validate();
我主要做的是生成一个按钮列表供用户单击,然后会显示一些信息。 CreatIdPanelButton 只是创建一个具有视觉约束的新 jbutton。我遇到的问题是 IdListPanel 没有调整大小,即使我尝试设置首选大小。我还尝试重新验证 jscrollpane,但这不起作用。有人知道在 jscrollpane 视口可见时更新它吗??
问题可能是你初始化了一个指定大小,尝试指定一个大小。
如果不是,您需要显示您引用的代码,因为其他地方可能存在一些错误,我看不到它。
所以我发现了这个问题,当您第一次创建 Jbutton 时,在设置和计算实际高度之前需要一些时间,因此 jbutton 的 getHeight 方法返回 0,因为它尚未设置。所以我通过添加一个常量 jbutton 目标高度
来修复它