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に存在する方法はありますか?