我收到了这个小通知JPanel:您可以滚动浏览通知,每个通知都有自己的白框。
绿色边框是包裹在JScrollPane中的JPanel,橙色边框是JcxtAreas包装在JScrollPanes中。我试图遍历下面的代码并创建每个正确尺寸的盒子,但即使使用水平胶水,盒子也像图像一样在扩展(我在JPanel上使用boxLayout(绿色框)) 。
代码:
for (int i = 1; i <= notifications.size(); i++)
{
ArrayList s = notifications.get(i); // Gets the text data
Dashboard.notificationsArea.add(new JScrollPane(new JTextArea((s.get(1).toString() + "\n" + s.get(0).toString())))); // Creates the white boxes
Dashboard.notificationsArea.add(Box.createVerticalStrut(5));
s.clear();
}
Dashboard.notificationsArea.add(Box.createVerticalGlue()); // Adds glue to fill up space (not working?)
for (int ii = 0; ii < Dashboard.notificationsArea.getComponents().length; ii++)
{
if (Dashboard.notificationsArea.getComponent(ii) instanceof JScrollPane)
{ // Style white box
((JScrollPane)Dashboard.notificationsArea.getComponent(ii)).setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Settings.SITE_ORANGE));
((JTextArea) ((JScrollPane)Dashboard.notificationsArea.getComponent(ii)).getViewport().getView()).setLineWrap(true);
((JTextArea) ((JScrollPane)Dashboard.notificationsArea.getComponent(ii)).getViewport().getView()).setEditable(false);
((JTextArea) ((JScrollPane)Dashboard.notificationsArea.getComponent(ii)).getViewport().getView()).setWrapStyleWord(true);
}
}
Dashboard.notificationsArea.revalidate();
}
如何使白框对齐到正确尺寸?
答案 0 :(得分:1)
如此完整example所示,您可以覆盖getPreferredSize()
以强制嵌套滚动窗格的特定大小。您可以在TextPanePerfectSize
中的@camickr中进一步细化首选大小。