1

我会保持简短,因为我所要求的只是一行代码。这是我的问题,所以为了让我的 Jlabel 出现,我使用 .setBounds

我的问题是我无法猜测我的文本的宽度,所以我需要做什么才能让我的 setBounds 将 Width 和 Height 作为文本。

如果我没有很好地解释这一点,请说,我会尝试解释更多。

Some1 想要一个例子,所以这里是:

我的代码片段:

JLabel poisonDescription = new JLabel("This is the poison icon, when this appears...");
//My declaration.. the next is inside a void.
poisonDescription.setBounds(50, 50, 400, 20);
        add(poisonDescription);

它非常简单,我希望将边界调整为字体的大小!

哦,是的,另一个问题...我如何制作 JLabel 多行?

4

4 回答 4

1

不要使用setBounds,只需让JLabel 自己处理其preferredSize。无论您为标签容器选择何种布局,它都会正确处理标签。

要拥有多行标签,只需使用 JTextArea:

JTextArea textArea = new JTextArea();
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setOpaque(false);
textArea.setWrapStyleWord(false);
于 2012-05-02T17:24:48.163 回答
1

您可以使用 HTML 来做到这一点。

import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        JLabel label = new JLabel("<html>One<br>Two!");
        JOptionPane.showMessageDialog(null, label);
    }
}

有关更多详细信息,请参阅Java 教程中的如何在 Swing 组件中使用 HTML

于 2012-05-02T17:24:53.330 回答
1

您的主要问题的答案是这是 LayoutManagers 旨在解决的问题。如果您想解决此问题,请停止使用空布局,开始使用简单的布局管理器,如 FlowLayout 或 BorderLayout,并让布局管理器调整您的标签大小

对于关于多行标签的问题 #2,最简单的方法是传入包含 <HTML> 标记的格式正确的 HTML

于 2012-05-02T17:25:40.413 回答
1
    l1 = new JLabel("UserName");
    l2 = new JLabel("Password");

    t1 = new JTextField();
    t2 = new JTextField();

    b1 = new JButton("Log In");
    b2 = new JButton("Cancel");

    l1.setBounds(100,100,40,30);
    l2.setBounds(100,150,70,30);
    t1.setBounds(200,100,150,30);
    t2.setBounds(200,150,150,30);
    b1.setBounds(100,200,90,30);
    b2.setBounds(200,200,90,40);

只需您可以提供按钮文本字段和其他的尺寸...

于 2014-03-26T17:50:42.393 回答