Я создал класс, который расширяет класс 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]
}
}
Когда я запускаю этот код, он возвращает «ШИРИНА: java.awt.Dimension [ширина = 0, высота = 0]», как я разместил в комментариях.
Есть ли способ получить ширину JLabel в конструкторе? Также существует ли какой-либо способ для JLabel, который позволил бы мне переносить слова?
chatBubble
, который должен бытьChatBubble
, иbubble_type
, который должен бытьbubbleType
? Я обычно придерживаюсь их, если только не подбрасываю несколько быстрых идей, пытаясь понять, как что-то сделать, как описано выше. - person   schedule 01.12.2011