それはうまく動作しないのか、それとも別の方法で動作するのか分かりません。スクロールせずにスクロールペインのコンテンツを水平に自動サイズ変更する
私は異なる項目を持つ3つのリストを持つorg.openide.windows.TopComponentを持っています。このリストは、その名前をクリックすることで隠すことができるので、高さは表示されるものに応じて変わります。リスト全体の高さがTopComponentの高さより大きい場合、スクロールバーが表示されます。幅が変更された場合は、リスト内の要素が並べ替えられて、リスト全体が使用可能な幅になるようにします。だから私は、その後のアプローチは、次のとおりです。
トップコンポーネント
インサイド側JScrollPane(私が必要なスクロールを提供します)。垂直スクロールのみ。
JPanelの内側にあります。
コンテンツをクリックして非表示にする3つのリスト(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);
}
}
これは、私が使用している(多かれ少なかれ)ビジュアル部分のコードです。 add(scroll、gbc)をadd(fcp、gbc)に変更すると、サイズ変更は動作しますが、スクロールは動作しません。
アイデア?
よりよいヘルプについては早く、 [MCVE]または[ショート、自己完結型、正しい例](http://www.sscce.org/)を投稿してください。 –