【问题标题】:changing label text in java swt在java swt中更改标签文本
【发布时间】:2014-03-12 11:54:43
【问题描述】:

在我的第一个 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:");

【问题讨论】:

  • 代码不完整。是在编译吗? serverStatusLbl2 是在哪里创建的?

标签: java sockets swt


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2015-12-27
    • 2016-09-16
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多