如何在简单的多线程条件下更新我的JPanel?

有3个线程,每个线程将向JPanel添加一个JButton,最后的3个窗口应分别具有3个Jbutton,但是分别有1个jbutton和2,3个,我尝试使用wait()和notifyAll()方法来将JPanel更新为3个Jbutton,但是失败

(顺便说一句,这是我的新手,该问题源自复杂的Server_Client联系人列表问题,我将其简化为以下代码)

JFrame example shot

import javax.swing.*;

class TestPanel implements Runnable {
//    the common Jpanel of 3 thread
static JPanel SharedPanel = new JPanel();

//    the common JFrame of 3 thread
static JFrame SharedFrame = new JFrame();


//    the JFrame window x,y position
static int Position = 200;

JButton Button1;
String ButtonName;


public TestPanel(String name) {

//        pass a name to JButton
    this.ButtonName = name;


}

public static void main(String[] args) throws InterruptedException {

//      initializing a "A" named JButton to the common Jpanel
    new Thread(new TestPanel("A")).start();


//      initializing a "B" named JButton to the common Jpanel

    new Thread(new TestPanel("B")).start();

//      initializing a "C" named JButton to the common Jpanel

    new Thread(new TestPanel("C")).start();

}


@Override
public void run() {
//      initializing jbutton 
    Button1 = new JButton(ButtonName);

//        add Jbutton to the static common jpanel
    SharedPanel.add(Button1);

//create a new JFrame,cause 3 window need 3 different jframe (with the same content)
    JFrame jf = new JFrame();

 //      add that common shared japnel the Jframe
    jf.add(SharedPanel);

//        default initializing of window
    jf.setSize(500,500);

//        to prevent overlap window,offset a little bit for better observation
    jf.setLocation(Position += 50,Position += 50);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setVisible(true);


}


}

在将新的Jbutton添加到jpanel后,如何刷新每个窗口?

(我也尝试在Run()的末尾分配一个while函数,但是我发现它没有用,也许我的问题对您来说很容易,谢谢您的帮助!)

kingpan998877 回答:如何在简单的多线程条件下更新我的JPanel?

致电:

revalidate();

然后

repaint();
您共享的JPanel上的

会刷新它。

如果您希望刷新所有框架,则可以使用“ notifyAll”在框架上调用这些方法。

本文链接:https://www.f2er.com/3126026.html

大家都在问