java - 如何删除 SWT 按钮的边框,使其看起来像一个标签

标签 java swt

我创建了一个按钮,在 SWT 中设置了图像。我想删除按钮的边框。所以它看起来像一个标签。请帮助任何人。

下面的代码片段:

breakNodeButton = new Button(this, SWT.TRANSPARENT);
breakNodeButton.setBackground(new Color(getDisplay(), 204, 204, 204));
Image breakNodeLabelImg = ...
breakNodeButton.setImage(breakNodeLabelImg);

最佳答案

作为Greg建议,您可以使用 PaintListener 来覆盖按钮的外观。

例如:

Button button = new Button( shell, SWT.PUSH );
button.addPaintListener( new PaintListener() {
  @Override
  public void paintControl( PaintEvent event ) {
    event.gc.setBackground( event.display.getSystemColor( SWT.COLOR_GREEN ) );
    event.gc.fillRectangle( event.x, event.y, event.width, event.height );
    Image image = event.display.getSystemImage( SWT.ICON_QUESTION );
    event.gc.drawImage( image, 0, 0 );
  }
} );

绘制代码将在绿色背景上的左上角绘制问号图像。

请注意,按钮的 computeSize() 方法仍然引用(空)文本和图像来计算按钮的首选大小。

因为这可能不是您想要的大小,您应该将按钮图像设置为您在绘制代码中使用的图像或建议布局使用预先计算的大小,例如通过设置合适的 GridDataRowData

或者,您可以使用 Label 并添加 MouseListener 来模拟 Button 的选择监听器。但是,默认情况下,标签无法通过选项卡遍历获得键盘焦点,因此可能无法完全替代 Button

关于java - 如何删除 SWT 按钮的边框,使其看起来像一个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161797/

相关文章:

java - 如何对我收到正确的 PreparedStatement 进行单元测试?

java - 带有 Java 和 webkit 的 HTML 编辑器 - SWT 浏览器

java - 如何在swt中等待另一个shell关闭一个shell?

java - f :param returns null?

java - C 中字节的包装类,如 java Byte、Integer、String、Double?

java - python 有类似 php java 桥的东西吗?

java - 为什么需要为多值关联使用 Set 覆盖 equals() 和 hashcode()?

java - JFace 删除 POJO 的不同实例

java - SWT 文本在错误位置换行

java - 如何在paintListener中垂直对齐不同的字体