java - swt 标签顶部有额外空间(边框内)

标签 java user-interface swt

我正在创建一个标签,但是当我在它周围绘制边框时,它显示边框内的数字正上方有一个小空间。我想让标签的边框与所有侧面的数字相接触。 关于如何做到这一点有什么想法吗? 我正在这样做-

    final Composite composite = new Composite(parent, SWT.NONE);
    final GridLayout layout = new GridLayout();
    layout.verticalSpacing = 0;
    layout.horizontalSpacing = 0;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    composite.setLayout(layout);
    composite.setLayoutData(new GridData(SWT.NONE, SWT.NONE, false, false));

    Label numberLabel = new Label(composite, SWT.BORDER);
    numberLabel.setLayoutData(new GridData(SWT.NONE, SWT.NONE, false, false));

我发现这个网站上传了要共享的图像 - http://i59.tinypic.com/24mrhgp.png

最佳答案

您可以在 Canvas 上绘制标签以对绘图进行精细控制。 Refer this article on canvas

调整方法e.gc.drawRectangle的参数以获得精细控制。

示例:

package testplugin;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class SWTHelloWorld {

    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);       
        shell.setLayout(new GridLayout());      
        final Composite composite = new Composite(shell, SWT.NONE);
        final GridLayout layout = new GridLayout();
        layout.verticalSpacing = 0;
        layout.horizontalSpacing = 0;
        layout.marginHeight = 0;
        layout.marginWidth = 0;
        composite.setLayout(layout);
        composite.setLayoutData(new GridData(SWT.NONE, SWT.NONE, false, false));

        Label numberLabel = new Label(composite, SWT.BORDER);
        numberLabel.setLayoutData(new GridData(SWT.NONE, SWT.NONE, false, false));
        numberLabel.setText("84");

        Canvas canvas = new Canvas(shell, SWT.NO_REDRAW_RESIZE);            
        canvas.addPaintListener(new PaintListener() {

            @Override
            public void paintControl(PaintEvent e) {
                e.gc.drawString("84", 0, 0);
                Point pt = e.gc.stringExtent("84");             
                e.gc.drawRectangle(0, 2, pt.x-1, pt.y-4);
            }

        });

        shell.pack();
        shell.open();
        shell.setSize(200, 300);
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}

关于java - swt 标签顶部有额外空间(边框内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25169545/

相关文章:

python - 如何使用 while 循环 PySimpleGUI 中的键获取日历按钮的值?

javascript - Java - 在 browser.execute(script) 中使用方法

java - 如何使用 Java 使正则表达式查找街道/道路?

java - 如何将包含 "include"部分的 Asciidoc 文档编译为单个 adoc 文件

user-interface - 当 QStandardItemModel itemChanged 发出信号时究竟发生了什么变化

jquery - 如何使选择菜单在不单击的情况下自动显示?

java - 无法从 AppCompatActivity 访问 Activity 方法

java - 单个 hadoop Mapper 对象是否用于多次调用 map()?

java - 添加列和行的摘要标题

java - 最佳实践 - SWT 表、TableViewer、EditingSupport