![](/img/trans.png)
[英]error while launching eclipse RCP application with latest plugins ( Eclipse 4.8 )
[英]Widgets doesn't show up while launching Eclipse RCP Application
我正在開發基於eclipase的插件,在其中創建了一個應用程序(使用SWT)。 有兩個類,即: RunAction.java
它由run()
dispose()
和init()
方法和Sample.java
其由與標簽插件的示例應用程序的。 現在,當我通過將其作為Eclipse應用程序運行來測試該應用程序時,顯示的外殼沒有標簽小部件。 有什么問題 我正在共享代碼。
RunAction.java
public class RunWizardAction extends Action implements IWorkbenchWindowActionDelegate {
/** Called when the action is created. */
Sample samp=new Sample();
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
public void init(IWorkbenchWindow window) {
}
/** Called when the action is discarded. */
public void dispose() {
}
/** Called when the action is executed. */
public void run(IAction action) {
//InvokatronWizard wizard= new InvokatronWizard();
new Thread(new Runnable(){
@Override
public void run() {
samp.sampleApp(shell);
}
}).start();
}
}
Sample.java(示例函數)
public void sampleApp(Shell shell) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Hello");
JLabel lab=new JLabel("Hello World");
Label username_checkout=new Label(shell, SWT.BOLD);
username_checkout.setText("User Name");
Button button=new Button(shell,SWT.PUSH);
button.setText("push");
shell.open();
shell.setSize(270,270);
while (!shell1.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
您的Shell
沒有布局。 該代碼對我有用:
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
/* SET LAYOUT */
shell.setLayout(new FillLayout());
shell.setText("Hello");
JLabel lab = new JLabel("Hello World");
Label username_checkout = new Label(shell, SWT.BOLD);
username_checkout.setText("User Name");
Button button = new Button(shell, SWT.PUSH);
button.setText("push");
shell.open();
shell.pack();
shell.setSize(270, 270);
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
}
此外,您的代碼中有太多Shell
:
public void sampleApp(Shell shell) {
Display display = new Display();
Shell shell = new Shell(display);
所以,現在你有兩個Shell
叫做shell
(順便說一句這不會編譯)...
while (!shell1.isDisposed())
還有第三個。 那是怎么回事?
如果您像Baz的答案那樣在Eclipse之外運行,那么您的示例應用程序會很好。
由於您是在Eclipse中運行的,因此已經有了Display和Shell。 使用它們。
public void sampleApp(Shell shell) {
shell.setLayout(new FillLayout());
shell.setText("Hello");
JLabel lab=new JLabel("Hello World");
Label username_checkout=new Label(shell, SWT.BOLD);
username_checkout.setText("User Name");
Button button=new Button(shell,SWT.PUSH);
button.setText("push");
shell.setSize(270,270);
shell.open();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.