2

JPanelのGridLayoutを介してレイアウトされたオブジェクトの配列があります。配列内のインデックスにオブジェクトを再作成し、これを反映するようにGridLayoutを更新できるようにする必要があります。今のところ、GridLayoutを「更新」または再描画する方法が見つかりません。GridLayoutまたはJPanel全体を作成せずにGridLayoutを更新することは可能ですか?JFrameにアクセスできないと仮定します。

import javax.swing.*;
import java.awt.*;

public class Test
{
    public static void main(String args[])
    {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();

        panel.setLayout(new GridLayout(5,5));

        JLabel[][] labels = new JLabel[5][5];
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                labels[j][i] = new JLabel("("+j+", "+i+")");
                panel.add(labels[j][i]);
            }
        }

        labels[0][0] = new JLabel("Hello World");

        //Without doing it this way (cause my objects can't do this)
        //labels[0][0].setText("Hello World!");

        frame.add(panel);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);
    }
}
4

1 に答える 1

6

ラベルのテキストを更新できない理由がわかりません。

なぜ「オブジェクトを再作成する」必要があるのですか? 意味がない。しかし、本当にこれを行う必要がある場合、コードは次のようになります。

panel.remove(0);
panel.add(theNewLabel, 0);
panel.revalidate();
panel.repaint();
于 2010-12-03T06:11:29.980 に答える