所以我不知道它是不是工作,或者我希望它以不同的方式工作,但无论如何。ScrollPane自动调整内容水平不滚动不起作用
我有一个org.openide.windows.TopComponent它有三个不同项目的列表。这个列表可以通过点击它们的名字来隐藏,因此高度是可变的,取决于哪些是可见的。如果列表总高度高于应显示滚动条的TopComponent高度。如果宽度更改,列表中的元素应重新排列,以便列表使用可用的整个宽度。所以我也跟着做法是:
的TopComponent
JScrollPane的内部(给我,我需要滚动)。只有垂直滚动。
内部JPanel。
在三个列表(具有JList的JScrollPanes)内使用它们各自的JLabel单击并隐藏内容。
所以,如果我遵循这种模式,一切看起来不错,当我改变宽度使其更大时,列表中的元素重新排列以使用新的宽度。但是,当我尝试再次将它缩小到原始大小时,列表会保持原样并隐藏一些元素(没有足够的空间),就像有一个滚动(水平)一样。但没有!但是,如果我把外滚动面板和我做更改宽度名单调整完全正常(包括当我让更广泛和更窄),但我没有垂直滚动,我需要......
public class ViewPalettePanel extends TopComponent {
fcp = new PalettePanel();
scroll = new JScrollPane(fcp,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 1;
gbc.weighty = 1;
add(scroll, gbc);
}
public class PalettePanel extends javax.swing.JPanel {
public PalettePanel() {
initComponents();
}
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
lbl1 = new javax.swing.JLabel();
scPnl1 = new javax.swing.JScrollPane();
lbl2 = new javax.swing.JLabel();
scPnl2 = new javax.swing.JScrollPane();
lbl3 = new javax.swing.JLabel();
scPnl3 = new javax.swing.JScrollPane();
lblPadding = new javax.swing.JLabel();
setLayout(new java.awt.GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
add(lbl1, gridBagConstraints);
scPnl1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scPnl1.setMinimumSize(new java.awt.Dimension(60, 60));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
add(scPnl1, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
add(lbl2, gridBagConstraints);
scPnl2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scPnl2.setMinimumSize(new java.awt.Dimension(60, 60));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
add(scPnl2, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
add(lbl3, gridBagConstraints);
scPnl3.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scPnl3.setMinimumSize(new java.awt.Dimension(60, 60));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
add(scPnl3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 1.0;
add(lblPadding, gridBagConstraints);
}
}
这是我使用的代码(或多或少都是完整的)用于视觉部分。如果我更改添加(滚动,gbc)是添加(fcp,gbc)我想要的大小调整,但不是滚动。
任何想法?
为了更好地帮助越早,发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 –