Java SWT(这是一个基本的java错误): Why is this code not working?

标签 java swt jface tableviewer

我在学习 java swt 时正在构建一个示例表。有人可以帮助我解释为什么此代码不起作用。当我运行代码时没有任何反应。

我猜我没有正确编写main方法。需要改变什么。

如果您有一些可以让我很好地学习 Java swt 的链接,请提供相同的链接。我找不到太多关于 swt 的帮助

import java.util.ArrayList;
import java.util.List;


import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.StyledCellLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.jface.viewers.ViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;

public class TestTable extends Dialog {

    private TableViewer tableviewer;
    private List<TestModel> entities;
    private TestTable testTable;

    public TestTable(Shell parentShell) {
        super(parentShell);
    }

    @Override
    public void create() {

        super.create();

        loadData();

    }

    @Override
    protected Control createDialogArea(Composite parent) {

        GridData dataLayout;

        Composite area = (Composite) super.createDialogArea(parent);

        dataLayout = new GridData(GridData.FILL_BOTH);
        dataLayout.heightHint = 150;
        dataLayout.widthHint = 500;


        Composite wrapper = new Composite(area, SWT.NONE);
        wrapper.setLayoutData(dataLayout);
        wrapper.setLayout(new FillLayout());

        tableviewer = new TableViewer(wrapper, SWT.BORDER | SWT.MULTI);
        tableviewer.setContentProvider(new ArrayContentProvider());

        ColumnViewerToolTipSupport.enableFor(tableviewer);

        final Table table = tableviewer.getTable();
        table.setLinesVisible(true);
        table.setHeaderVisible(true);

        createColumns(wrapper);

        return area;

    }

    private void createColumns(Composite wrapper) {

        TableViewerColumn firstnameColumn = new TableViewerColumn(tableviewer, SWT.NONE);
        firstnameColumn.getColumn().setText("Vorname");
        firstnameColumn.setLabelProvider(new StyledCellLabelProvider(StyledCellLabelProvider.COLORS_ON_SELECTION) {

            @Override
            public void initialize(ColumnViewer viewer, ViewerColumn column) {
                super.initialize(viewer, column);
                this.setOwnerDrawEnabled(false);
            }

            @Override
            public void update(ViewerCell cell) {
                TestModel model = (TestModel) cell.getElement();
                cell.setText(model.getFirstName());
                cell.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_GREEN));
            }

            @Override
            public String getToolTipText(Object element) {
                TestModel model = (TestModel) element;
                return "USE THIS AS TOOLTIP";
            }

        });

        TableViewerColumn lastnameColumn = new TableViewerColumn(tableviewer, SWT.NONE);
        lastnameColumn.getColumn().setText("Nachname");
        lastnameColumn.setLabelProvider(new StyledCellLabelProvider(StyledCellLabelProvider.COLORS_ON_SELECTION) {

            @Override
            public void initialize(ColumnViewer viewer, ViewerColumn column) {
                super.initialize(viewer, column);
                this.setOwnerDrawEnabled(false);
            }

            @Override
            public void update(ViewerCell cell) {
                TestModel model = (TestModel) cell.getElement();
                cell.setText(model.getLastName());
                cell.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_GREEN));
            }

            @Override
            public String getToolTipText(Object element) {
                TestModel model = (TestModel) element;
                return "USE THIS AS TOOLTIP";
            }

        });

        for (TableColumn c : tableviewer.getTable().getColumns()) {
            c.pack();
        }

    }

    private void loadData() {

        entities = new ArrayList<TestModel>();

        entities.add(new TestModel("___Firstname1___", "Lastname1", "Username1", "Kommentar"));
        entities.add(new TestModel("___Firstname2___", "Lastname2", "Username2", "Kommentar"));
        entities.add(new TestModel("___Firstname3___", "Lastname3", "Username3", "Kommentar"));
        entities.add(new TestModel("___Firstname4___", "Lastname4", "Username4", "Kommentar"));
        entities.add(new TestModel("___Firstname5___", "Lastname5", "Username5", "Kommentar"));

        tableviewer.setInput(entities);
        tableviewer.refresh();

    }
    public static void main(String[] args){
        Shell shell = new Shell();
        /*TestTable testTable = */new TestTable(shell);

    }


}

最佳答案

尝试:

public static void main(String[] args){
    Shell shell = new Shell();
    TestTable testTable = new TestTable(shell);
    testTable.open();
}

Vogella 通常有很好的教程:

http://www.vogella.com/tutorials/EclipseDialogs/article.html

关于Java SWT(这是一个基本的java错误): Why is this code not working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31848768/

相关文章:

java - SWT/JFace 还是 Eclipse RCP?

java - 如何设置已具有背景图像的 JButton 的大小?

java - 尝试使用地形表示制作击剑 map

java - Selenium Appium Java Android Chrome 浏览器

java - 如何检索数据库中一列字段中的多个数据并将其逐个显示到输入字段中

java - Eclipse SWT : How to unmask style combination from getStyle()

java - SWT 树和 TreeItem : Remove or change the drawing behavior of the expand/collapse indicator

java - 数据绑定(bind)和验证 TableViewer?

java - Eclipse JFace 的向导

java - SWT 缩放小部件 - 浮点值