使用我的第一个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:");
答案 0 :(得分:0)
有两种方法可以做到这一点:
Label
成为该类的字段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发布了答案......