ボタンに収まるように、長い行を複数の行に分割するにはどうすればよいですか?
他のほとんどの回答では HTML が使用されていますが、文字列を行にハードコーディングしているため、ボタンの作成中にその場で行を分割することができません。
編集済み:これを動的に行う方法について調査、質問、および適切な回答が得られなかった後、これを行う方法を追加しました。
あなたの方法を共有してください
これは、HTML タグを使用して動的に行を分割するサンプル メソッドです。
/**
* This method divides the button text into lines by applying
* html tags. Only way to get multiple lines on a JButton.
* @param string
* @return
*/
private String wrapText(String string){
//Return string initialized with opening html tag
String returnString="<html>";
//Get max width of text line
int maxLineWidth = new ImageIcon("Images/buttonBackground.png").getIconWidth()-10;
//Create font metrics
FontMetrics metrics = this.getFontMetrics(new Font("Helvetica Neue", Font.PLAIN, 15));
//Current line width
int lineWidth=0;
//Iterate over string
StringTokenizer tokenizer = new StringTokenizer(string," ");
while (tokenizer.hasMoreElements()) {
String word = (String) tokenizer.nextElement();
int stringWidth = metrics.stringWidth(word);
//If word will cause a spill over max line width
if (stringWidth+lineWidth>=maxLineWidth) {
//Add a new line, add a break tag and add the new word
returnString=(returnString+"<br>"+word);
//Reset line width
lineWidth=0;
}else{
//No spill, so just add to current string
returnString=(returnString+" "+word);
}
//Increase the width of the line
lineWidth+=stringWidth;
}
//Close html tag
returnString=(returnString+"<html>");
//Return the string
return returnString;
}