【问题标题】:Update Grid in GridLayout在 GridLayout 中更新网格
【发布时间】:2011-05-19 13:34:31
【问题描述】:

我有一组通过 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);
    }
}

【问题讨论】:

    标签: java refresh jpanel repaint grid-layout


    【解决方案1】:

    我不明白你为什么不能只更新标签上的文字。

    为什么需要“重新创建对象”?这没有道理。但如果你真的需要这样做,那么代码应该是这样的:

    panel.remove(0);
    panel.add(theNewLabel, 0);
    panel.revalidate();
    panel.repaint();
    

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多