سؤال

لدي مجموعة من الأشياء الموضوعة من خلال Gridlayout في jpanel. يجب أن أكون قادرًا على إعادة إنشاء الكائن في فهرس في الصفيف والحصول على تحديث GridLayout لتعكس هذا. حتى الآن ، لا يمكنني العثور على "تحديث" أو إعادة رسم Gridlayout. هل من الممكن تحديث GridLayout دون إنشاء GridLayout بالكامل أو JPanel؟ لنفترض أنه لا يمكنني الوصول إلى 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);
    }
}
هل كانت مفيدة؟

المحلول

لا أفهم لماذا لا يمكنك فقط تحديث النص على الملصق.

لماذا تحتاج إلى "إعادة إنشاء الكائن"؟ لا معنى له. ولكن إذا كنت بحاجة حقًا إلى القيام بذلك ، فسيكون الرمز مثل:

panel.remove(0);
panel.add(theNewLabel, 0);
panel.revalidate();
panel.repaint();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top