如何将Label放在Button上?

时间:2018-03-21 20:45:40

标签: java swt

主题说明了这一点,我如何将Label直接放在Button上?试过多种方式,什么都行不通..我不能用button.setTest(“xxx”);在这种情况下。

编辑:我认为在标签中提及SWT库就足够了。我对代码感到羞愧,因此我不想发布它。

问题是我使用for循环创建了 很多 按钮,因此我无法通过变量名称来解决它们。我的想法是创建另一个标签的“层”,并将它们放在按钮上。 单击按钮后,标签应显示为

MouseListener posluchac = new MouseAdapter() {
    @Override
    public void mouseDown(MouseEvent me) {
        for (int k = 0;k<sirka;k++)
        {
            for (int l = 0;l<vyska;l++)
            {
                if(me.getSource() == cudliky[k][l])
                {
                    System.out.println(k +" "+ l);
                    Label lbl4 = new Label(cmpst2, SWT.NONE);
                    lbl4.setText("X");
                    lbl4.setBounds((990-sirka*25)/2+k*25,(800-vyska*25)/2+l*25,25,25);
                }   
            }
        }
    }
}

此代码创建隐藏的标签。

2 个答案:

答案 0 :(得分:1)

即使您不希望按钮具有初始文本,也无需在Label之上放置Button。这可以通过使用正确的LayoutLayoutData来实现。以下是使用包含5列的GridLayout的示例。按钮最初没有文字,但是点击它们后(如你在问题中描述的那样):

public static void main(String[] args)
{
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(5, true));

    for (int i = 0; i < 30; i++)
    {
        Button button = new Button(shell, SWT.PUSH);
        button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        button.addListener(SWT.Selection, e -> button.setText(UUID.randomUUID().toString().substring(0, 10)));
    }

    shell.pack();
    shell.open();
    shell.setSize(600, 300);

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

看起来像这样:

enter image description here

答案 1 :(得分:0)

你有一个错字。

button.setText("xxx"); // works