2

hist(HistoryPanel extends JPanel) を JScrollPane のビューポートにしようとしていますhistScroll。問題は、スクロールバー ポリシー (以下のコード) で強制的に表示しない限り、水平スクロール バーが表示されず、強制してもスクロールする場所がないことです。問題は、HistoryPanel のサイズが水平方向に大きくならないことです。のサイズを設定するさまざまな方法を試しましhistたが、横方向のサイズは固定され続けています。ただし、垂直方向には完全に正常に機能します。何が問題なのかわかりません。

public SuperPanel(GoPanel panel)
{
    super(new BorderLayout());
    setFocusable(false);
    score = new ScorePanel();
    go = panel;
    go.scorePanel = score;
    score.setPreferredSize(new Dimension(panel.getWidth(), 20));
    hist = new HistoryPanel(go);
    hist.setPreferredSize(new Dimension(panel.getWidth()*20, 100*5));
    //hist.setMinimumSize(new Dimension(panel.getWidth()*20, 100*5));
    //hist.setSize(new Dimension(panel.getWidth()*20, 100*5));
    go.histPanel = hist;
    histScroll = new JScrollPane(hist, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    histScroll.setPreferredSize(new Dimension(panel.getWidth(), 100));
    add(score, "North");
    add(panel, "Center");
    add(histScroll, "South");
}

下にスクロールすることはできますが、右にスクロールすることはできません。画像の一部が切り取られるため、これは大きな問題です。このプログラムでは、実際には垂直スクロールよりも水平スクロールの方がはるかに重要です。

ここに画像の説明を入力

4

1 に答える 1

1

追加するコンポーネントに優先サイズを設定する必要はありませJScrollPaneん。スクロールできないため、次の行を削除するだけです:

hist.setPreferredSize(new Dimension(panel.getWidth()*20, 100*5));

コンポーネントへのサイズの設定に関する次の投稿もお読みください。

于 2014-01-09T12:03:54.130 に答える