2012-05-14 27 views
0

我正在编写一个操作自定义sqlite数据库的应用程序。数据库相当复杂,它具有树状结构。在应用程序运行时,在java SWT应用程序中添加/删除按钮。

main 
--->operator1 
------>name 
------>address 
--->operator2 
------>name 
------>address 
------>tariffs 
---------->name 
---------->price 

我需要类似'路径'的东西,以便轻松浏览表格和编辑东西......我的数据被组织为SWT表。我有SWT.MouseDoubleClick侦听器附加到它。我打算通过双击特定的表格行来“进入”我的操作员数据。问题是,如何回到“主视图”,我需要某种类型的导航。 我目前的想法是创建一个容器并在其中添加必要的按钮。类似

nautilus

通知,路径创建为连续按键,水平对齐:

mentis -> Dropbox -> Photos 

最大的问题是如何做到这一点;)

我能够创造一个按钮并将其添加到may容器,但是这仅在应用程序启动时才起作用。我不知道如何在应用程序运行时向我的容器添加按钮。

在我的主类我有某事像这样:

Composite pathBarContainer = new Composite(shell, SWT.BORDER); 
    pathBarContainer.setSize(shell.getBounds().width, 20); 
    pathBarContainer.setLayout(new FillLayout(SWT.HORIZONTAL)); 
    GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); 
    gridData.horizontalSpan = 3; 
    pathBarContainer.setLayoutData(gridData); 

    pathBar = new PathBar(pathBarContainer, shell, contentProvider); 
    pathBar.getPathBar(); 

这是我PathBar类:

import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Shell; 

public class PathBar { 

Composite parent; 
Composite pathBar; 
Shell mainShell; 
ContentProvider contentProvider; 
Button mainButton; 
Button nextButton; 

public PathBar(Composite parent_in, Shell mainShell_in, ContentProvider cp) { 

    parent = parent_in; 
    mainShell = mainShell_in; 
    contentProvider = cp; 


    pathBar = new Composite(parent, SWT.BORDER_DOT); 
    //pathBar.setSize(100, 300); 
    pathBar.setLayout(new GridLayout(10, true)); 

    mainButton = new Button(pathBar, SWT.PUSH); 
    mainButton.setText("main"); 

} 

public Composite getPathBar() { 



    return pathBar; 
} 

public void addMainButton() { 
    mainButton = new Button(pathBar, SWT.PUSH); 
    mainButton.setText("main"); 
    pathBar.redraw(); 
    //parent.redraw(); 
    //mainShell.redraw(); 
} 

public void addButton() { 
    nextButton = new Button(pathBar, SWT.PUSH); 
    nextButton.setText("sth"); 
    pathBar.redraw(); 
    parent.redraw(); 
    System.out.println("addButton"); 
} 
} 

方法addMainButton()和Add按钮()都应该是从事件处理程序运行。 ..附在我的SWT桌上...

如何解决这个问题? 请帮助:)

回答

2

添加按钮后,您需要告诉它重做您的布局。

pathBar.layout(true); 
+0

它的工作原理:D谢谢:) – mentis

相关问题