4

JListアイテムのツールチップテキストを取得するには、次の行があります。

JList aList=new JList(aData)
{
  public String getToolTipText(MouseEvent evt)  // This method is called as the cursor moves within the list.
  {
    String tooltipText="Some tooltip";
    int tooltipWidth= ?
    return tooltipText;
  }
}

getToolTipText()内で、tooltipTextの幅を取得するにはどうすればよいですか?

4

3 に答える 3

2

FontMetrics一部のテキストのサイズを決定するために使用できます。

FontMetrics metrics = graphics.getFontMetrics(font);
int adv = metrics.stringWidth(text);

http://docs.oracle.com/javase/tutorial/2d/text/measuringtext.html

使用されているフォントを見つけるには、使用しているフォントを照会できLookAndFeelます

UIDefaults uidefs = UIManager.getLookAndFeelDefaults();
Font font = uidefs.getFont("ToolTip.font");
System.out.println(font);
// prints: FontUIResource[family=Dialog,name=Dialog,style=plain,size=12]

使用できるキー(ここでは「ToolTip.font」)を知るために、SwingのデフォルトのLookAndFeelsのドキュメントを確認できます(例:Nimbus)。

http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/_nimbusDefaults.html#primary

于 2012-06-10T16:07:35.713 に答える
1

ツールチップを次のようにhtmlで作成します:"<html>first line<Br>========<Br>second line</html>"、区切り線"====="を最初の行の長さに一致させたいので、見栄えが良くなります。

代替案2と3を検討してください。どちらも計算を必要とせず、「等号の行」よりも見栄えがします。

HTMLツールチップ

import java.awt.*;
import javax.swing.*;
import javax.swing.border.LineBorder;

public class HtmlToolTip {

    HtmlToolTip() {
        String attempt1 = "<html>first line 1<Br>========<Br>second line</html>";
        JLabel label1 = new JLabel(attempt1);
        label1.setBorder(new LineBorder(Color.BLACK));

        String attempt2 = "<html><u>first line 2</u><br>second line</html>";
        JLabel label2 = new JLabel(attempt2);
        label2.setBorder(new LineBorder(Color.BLACK));

        String attempt3 = "<html>first line 3<hr>second line</html>";
        JLabel label3 = new JLabel(attempt3);
        label3.setBorder(new LineBorder(Color.BLACK));

        JPanel p = new JPanel(new FlowLayout(FlowLayout.LEADING,5,5));
        p.add(label1);
        p.add(label2);
        p.add(label3);

        JOptionPane.showMessageDialog(null, p);
    }

    public static void main(String[] args) throws Exception {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new HtmlToolTip();
            }
        });
    }
}
于 2012-06-10T18:05:10.067 に答える
1

答えのおかげで、私はそれを理解しました、これが私がしたことです:

UIDefaults uidefs=UIManager.getLookAndFeelDefaults();
Font font=uidefs.getFont("ToolTip.font");
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
Graphics2D g2d=ge.createGraphics(new BufferedImage(1,1,1));
FontMetrics fontMetrics=g2d.getFontMetrics();
Top_Line_Width=fontMetrics.stringWidth("Toptip text");
于 2012-06-10T17:57:02.530 に答える