在JLabel图标上添加JLabel文本。使用相同的JLabel文本。

4

抱歉标题有点模糊,但我想不出该怎么写。 无论如何,对于图像上的文本,我使用了JLabel文本并将其添加到图标中。

    JLabel icon = new JLabel(new ImageIcon);
    icon.setLayout(new GridBagLayout());
    add(icon);

    JLabel text = new JLabel();
    text.setText(language.getString("translation"));
    text.setLocation(10, 10);
    text.setSize(text.getPreferredSize());
    icon.add(text);

我正在为我的应用程序进行国际化(i18n),每当我切换语言环境时,它都会将相同的JLabel添加到先前的标签上,以便您可以看到重叠的文本。我该如何使用相同的JLabel而不是在其上添加新标签?
谢谢。

4
您可以发布一个 SSCCE(短小精悍、自包含、正确可编译的示例)使您的问题更易于理解,或者您可以发布一张图像来阐明 =) - Gabriel Câmara
看我的答案。如果你想让文本重叠在图标上 =) - Gabriel Câmara
3个回答

7

我认为你想要创建的是具有自定义图标的JLabel

你应该创建一个JLabel并设置它的图标,就像这样:

JLabel label = new JLabel(language.getString("translation"));
label.setIcon(new ImageIcon(/* path of your icon */));

如果你想解决文本重叠的问题,你应该像这样设置文本对齐方式:

lblText.setHorizontalTextPosition(JLabel.CENTER);


可以将其设置在CENTERTOP位置之间吗? - Adir D

2
将文本标签作为类的字段,并仅调用setText()而不是重新创建/添加它们。

2
你可以使用setText("abc")来在imageLabel上设置文本,并可以使用setHorizontalTextPosition(JLabel.CENTER)和setVerticalTextPosition(JLabel.BOTTOM)方法来定位文本。
dragLabel[i].setText("default");
           dragLabel[i].setHorizontalTextPosition(JLabel.CENTER);
           dragLabel[i].setVerticalTextPosition(JLabel.BOTTOM);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接