在Java中覆盖基本箭头按钮类

5

BasicArrowButton是Java SE的一部分,它是一个类,用于显示指定方向的单个箭头头部。我想覆盖这个类,保留现有的方法,但让BasicArrowButton显示双箭头头部而不是单箭头头部。例如,请参见以下网址www.tiresias.org/images/ff.jpg。我只是想改变这个图标的绘制方式。

谢谢。

2个回答

8

子类化 BasicArrowButton 并覆盖 paintTriangle 方法。你可以尝试两次调用 BasicArrowButtonpaintTriangle 方法来获取三角形。例如:

public static class Bidriectional extends BasicArrowButton {
  private static final long serialVersionUID = 1L;

  public Bidriectional() {
   // This does not matter, we'll override it anyways.
   super(SwingConstants.NORTH);
  }

  @Override
  public void paintTriangle(Graphics g, int x, int y, int size,
    int direction, boolean isEnabled) {

   super.paintTriangle(g, x - (size / 2), y, size, SwingConstants.EAST, isEnabled);
   super.paintTriangle(g, x + (size / 2), y, size, SwingConstants.EAST, isEnabled);
  }
 }

应该会给你一个按钮,看起来像这样:

screenshot
(来源: amnet.net.au)


这真是太完美了。正是我所需要的。非常感谢! - Elliott

1

简单。

子类化BasicArrowButton并覆盖paint()方法,通过使用g.drawImage()绘制你在问题中提到的图像(ff.jpg或任何其他图像)。请注意,您可能需要将ff.jpg复制到您的项目中并加载它。

注意:为此,您必须创建一个新类并使用它。您不能更改BasicArrowButton的现有行为,因为它不使用UI委托。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接