簡體   English   中英

如何將文本從文本字段帶到另一個JFrame中的JLable?

[英]How to take text from a text field to a JLable in another JFrame?

我正在使用Java為足球模擬器制作UI,並且一段時間以來一直陷入問題。 我正在嘗試將用戶輸入的團隊轉移到另一個JFrame上的另一個JLabel。

我已經嘗試過getter和setter方法,但是我不知道何時調用它們。

第一幀(jtextfield在其中):

String userinput1 = Home.getText();
System.out.println(userinput1);
String userinput2 = Away.getText();

第二幀(jlabel Home在哪里):

JLabel Home = new JLabel("");
Home.setBounds(333, 33, 46, 14);
frame.getContentPane().add(Home);
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

當我在第二幀中打印userinput1時,我希望看到輸入的橄欖球隊的名稱,例如“ Arsenal”,但實際輸出為空。

進行所需操作(IMO)的最佳方法是擁有一個靜態類,該類要共享數據。

例如,假設我有兩個JFrame,在一個JFrame中,我要求某人提供他們的電話號碼,但是在第二個JFrame中,我要顯示該電話號碼。 我會有類似的東西:

public class UserData{
    private static String _phoneNumber = "";
    private static ArrayList<Runnable> listeners = new ArrayList<Runnable>();

    public static void listenForUpdate(Runnable run){
        listeners.add(run);
    }

    private static void update(){
        for(Runnable r: listeners){
            r.run();
        }
    }

    public static void setPhoneNumber(String phoneNumber){
        _phoneNumber = phoneNumber;
        update();
    }

    public static String getPhoneNumber(){
        return _phoneNumber;
    }
}

public class InputFrame extends JFrame{
    // ... other code here
    ... onInput(String phoneNumber){
        UserData.setPhoneNumber(phoneNumber);
    }
}


public class DisplayFrame extends JFrame{
    public DisplayFrame(){
        super();
        JLabel label = new JLabel("default");
        add(label);
        UserData.listenForUpdate(new Runnable(){
            public void run(){
                label.setText(UserData.getPhoneNumber());
            }
        });

        setVisible(true);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM