2

Hy .. JPanel があり、この contentPanel に他のカスタム パネルを追加して場所などを指定しました。したがって、JScrollPane を contentPanel に追加し、下にスクロールすると常に contentPanel がクリアされますが、パネルはまだそこにあります。でも見えない…

それらを再び表示するにはどうすればよいですか?

これは、Panel を contentPanel に追加するための私のコードです。私は固定ウィンドウを持っているので、x、y、j は場所の設定項目です。

private void reloadContentPanel() {

    int x = -200, y = 0, j = 1, row = 4;
    EventPanel panel = null;

    int i;
    for(i=0; i < this.images.size();i++)
    {
        panel = new EventPanel(this.images.get(i).getAbsolutePath(), 
                               this.images.get(i).getName());

        panel.setLocation(x+(j*200), y);
        j++;
        if(i == row) {
            x = -200;
            y += 205;
            j = 1;
            row += 5;
        }
        this.contentPanel.add(panel);
    }
    this.repaint();
}

ありがとう

4

2 に答える 2

1

LayoutManager を正しく使用していないようです。

JFrameを作成した後(コンストラクター内で推測しています)、次を追加します(たとえば):

this.setLayout(new FlowLayout());

これは確かに、実行しようとしているものに最適なレイアウト マネージャーではありませんが、add呼び出しが表示されたコンポーネントをオーバーライドするのを防ぎます。

LayoutManagerについてさらに読む必要があります

これ以外に、JFrame を拡張することはあまりお勧めできません。他のすべてのコンポーネントと同様に、JFrame をクラスのメンバーとして扱うことをお勧めします。

于 2010-09-26T20:51:10.883 に答える
0

答えがあります!:)

FlowLayoutではなくGridLayoutを使用しているので、問題なく、パネルが自動的に更新されます=)

于 2010-09-26T21:33:28.583 に答える