主题说明了这一点,我如何将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);
}
}
}
}
}
此代码创建隐藏的标签。
答案 0 :(得分:1)
即使您不希望按钮具有初始文本,也无需在Label
之上放置Button
。这可以通过使用正确的Layout
或LayoutData
来实现。以下是使用包含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();
}
看起来像这样:
答案 1 :(得分:0)
你有一个错字。
button.setText("xxx"); // works