我保持这个简短,因为所有即时通讯只是问一行代码。 继承了我的问题,所以为了让我的Jlabel显示我使用.setBounds
我的问题是我无法猜测文本的宽度所以我需要做什么才能使我的setBounds采用文本宽度和高度。
如果我没有很好地解释这一点,请说并试着解释一下。
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);
非常简单,我希望Bounds调整大小为字体大小!
哦,是的另一个问题......我如何制作JLabel多线?
答案 0 :(得分:1)
不要使用setBounds,只需将JLabel句柄自己保留为preferredSize即可。无论您为标签容器选择何种布局,它都将正确处理标签。
要拥有多行标签,只需使用JTextArea:
JTextArea textArea = new JTextArea();
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setOpaque(false);
textArea.setWrapStyleWord(false);
答案 1 :(得分: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);
}
}
有关详细信息,请参阅The Java Tutorial中如何在Swing组件中使用HTML
答案 2 :(得分:1)
您的主要问题的答案是这是LayoutManagers旨在解决的问题。如果你想解决这个问题,请停止使用null布局,开始使用像FlowLayout或BorderLayout这样的简单布局管理器,让layoutmanager调整你的标签大小
关于多行标签的问题#2,最简单的方法是使用&lt; HTML&gt;传入格式正确的HTML。包含标签
答案 3 :(得分: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);
只需提供按钮文本字段和其他内容的维度......