titledBorder标题中的图标

gre*_*ard 6 java swing

您可以在titledBorder的标题中放置一个图标,例如以下代码:


import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

public class TitledExample extends JPanel {

  public TitledExample() {
    super(true);

    this.setLayout(new GridLayout(1, 1, 5, 5));

    JLabel label = new JLabel("Titled Border");
    label.setHorizontalAlignment(JLabel.CENTER);

    TitledBorder titled = new TitledBorder("Image here ?? Title");
    label.setBorder(titled);

    add(label);
  }
Run Code Online (Sandbox Code Playgroud)

谢谢,干杯

rhu*_*rhu 9

尝试子类化TitledBorder,并覆盖该paintBorder方法:

 @Override
 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) 
 {
     super.paintBorder(c, g, x, y, width, height);

     // Now use the graphics context to draw whatever needed
     g.drawImage(img, xImageOffset, yImageOffset, imgWidth, imgHeight, observer);
 }
Run Code Online (Sandbox Code Playgroud)

不是绝对肯定这是完全正确的方法调用,但你明白了; 一旦您可以访问该Graphics对象,您可以绘制任何您需要的内容.


tra*_*god 6

它可能不是你想要的,但可能是一个很好的Unicode™字形或两个.

附录:@ rhu的方法更可取,但我无法抗拒尝试这个:

在此输入图像描述

TitledBorder titled = BorderFactory.createTitledBorder("\u2615");
titled.setTitleFont(new Font(Font.Dialog, Font.PLAIN, 32));
titled.setTitleColor(Color.blue);
label.setBorder(titled);
Run Code Online (Sandbox Code Playgroud)