在java swt中更改标签文本

时间:2014-03-12 11:54:43

标签: java sockets 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 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点:

  1. 使Label成为该类的字段
  2. 制作Label final
  3. 以下是一个例子:

    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无关,因此您可能希望在编程中阅读有关closure的内容。

    Here是一个关于SO的相关问题,其中臭名昭着的Jon Skeet发布了答案......