簡體   English   中英

更改java swt中的標簽文本

[英]changing label text in java swt

在我的第一個Java swt程序上工作時,我遇到了麻煩,可能是一個愚蠢的問題! 我正在嘗試創建一個基本的網絡程序來偵聽連接,我有一個按鈕,我想啟動套接字,然后更改標簽以顯示“服務器偵聽”或其他內容

這是按鈕

Button startServerBtn = new Button(shlChattybox, SWT.NONE);
        startServerBtn.addSelectionListener(new SelectionAdapter() {

            ServerSocket serversocket = new ServerSocket(PORT); 

我可以在這里更改標簽的文本嗎?

            serverStatusLbl2.setText("listening!"); 

            public void widgetSelected(SelectionEvent e) {
            }
        });
    startServerBtn.setFont(SWTResourceManager.getFont("Segoe UI", 16, SWT.BOLD));
    startServerBtn.setBounds(53, 63, 260, 75);
    startServerBtn.setText("Start Server");

    listeningPortTxt = new Text(shlChattybox, SWT.BORDER);
    listeningPortTxt.setBounds(143, 26, 76, 21);

    Label listeningPortLbl = new Label(shlChattybox, SWT.NONE);
    listeningPortLbl.setBounds(53, 29, 84, 15);
    listeningPortLbl.setText("Listening Port: ");

    Label serverStatusLbl1 = new Label(shlChattybox, SWT.NONE);
    serverStatusLbl1.setBounds(53, 157, 84, 15);
    serverStatusLbl1.setText("Server Status:");

有兩種方法可以做到這一點:

  1. 使Label成為課程的一個字段
  2. 使Label final

這是一個例子:

private Label fieldLabel = new Label(shell, SWT.NONE);

public void testMethod()
{
    Button button = new Button(shell, SWT.PUSH);
    button.setText("Print");

    final Label finalLabel = new Label(shell, SWT.NONE);

    button.addListener(SWT.Selection, new Listener(){
        @Override
        public void handleEvent(Event e)
        {
            fieldLabel.setText("TEXT");
            finalLabel.setTexT("TEXT");
        }
    })
}

這不是SWT特有的,因此您可能需要閱讀一些有關閉包編程的知識。

是一個有關SO的相關問題,臭名昭著的Jon Skeet發表了答案...

暫無
暫無

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

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