我创建了一个扩展 JLabel 类的类。这个类本质上使我将相关的 IconImage 附加到我的 JLabel 并正确调整它的大小变得“更好”。
当我通过代码创建一个新的 JLabel 时,我现在通过代码来完成它。something = new MyClass("message", 1);
对于上面的代码,我已经准备好MyClass(String msg, int type) {}
构造函数。在这个构造函数中,我希望能够获得用户指定的文本的宽度。如果该宽度超过某个值,300px
那么我想插入一个换行符(基本上根据最大宽度使 JLabel 自动换行)。
我已经删除了下面代码中将图像添加到 JLabel 的部分,因为这与问题无关——我创建了一个单独的类来处理这个问题,它已经可以工作了。
package org.me.myimageapp;
import javax.swing.JLabel;
/**
*
* @author Jordan
*/
public class chatBubble extends JLabel {
public static final int BUBBLE_TO_USER = 1;
public static final int BUBBLE_FROM_USER = 2;
chatBubble(String message, int bubble_type) {
if ( (bubble_type!=1) && (bubble_type!=2) ) {
return;
}
this.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
this.setText(message);
this.setVisible(true);
System.out.println("WIDTH: "+this.getSize().toString()); //WIDTH: java.awt.Dimension[width=0,height=0]
}
}
当我运行此代码时,它会返回“WIDTH:java.awt.Dimension[width=0,height=0]”,就像我在评论中放置的那样。
有什么方法可以在构造函数中获取 JLabel 的宽度?JLabel 还有什么方法可以让我自动换行吗?