You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SWT弹窗内多个按钮编写ActionListener实现点击值写入文本框

实现方案

你只需要在弹窗的按钮点击监听器中直接关联labelTxt控件的赋值逻辑即可,Java SWT 环境下完整修改代码如下:

// 注意如果labelTxt是方法内局部变量,需要添加final修饰保证匿名内部类可访问
final Text labelTxt = new Text(composite, SWT.BORDER);
label.setText("Test:");        
labelTxt.setText("56");         //value here might be empty or might be already set with 
                                // any value from demo image

labelTxt.addMouseListener(new MouseListener() {
    @Override
    public void mouseUp(MouseEvent arg0) {
    }

    @Override
    public void mouseDown(MouseEvent arg0) {
    }

    @Override
    public void mouseDoubleClick(MouseEvent arg0) {
        System.out.println(" mouse double clicked");
        // 创建弹窗
        Shell popupShell = new Shell(composite.getShell(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
        popupShell.setText("选择数值");
        popupShell.setLayout(new GridLayout(3, false)); // 按你的弹窗按钮布局调整列数
        
        // 示例创建几个选项按钮,和演示图对应
        String[] btnValues = {"R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9"};
        for (String value : btnValues) {
            Button btn = new Button(popupShell, SWT.PUSH);
            btn.setText(value);
            btn.setData(value);
            // 按钮点击事件
            btn.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    // 直接给labelTxt赋值
                    labelTxt.setText(btn.getData().toString());
                    // 赋值完成后关闭弹窗,可按需保留或删除
                    popupShell.dispose();
                }
            });
        }
        
        popupShell.pack();
        popupShell.open();
    }
});  

核心逻辑说明

  • 要保证labelTxt可以被按钮的匿名监听器访问:如果是类成员变量无需额外处理,如果是方法内局部变量,必须用final修饰(JDK 1.8+只要变量未被二次赋值,隐式符合effectively final要求也可)
  • 如果你已经完成了弹窗和按钮的绘制,不需要调整原有结构,只需要给每个已有的按钮添加对应的SelectionListener,在回调方法中执行labelTxt.setText(按钮对应值)即可。

内容的提问来源于stack exchange,提问作者Dee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:39:00