0
目前我所有的Java GUI應用程序都有SWT.SWT
作爲它們的窗口類。我希望其中的一些鏈接爲菜單應用程序中的子窗口,例如Cairo-Dock。這是從wmctrl -lx
輸出的第三列。SWT - 如何更改窗口類名稱? wm_class
我嘗試使用Display.setAppName()
方法嘗試設置此名稱。 Display.setAppName
或display.SetAppname
都不會將應用程序類別從SWT.SWT
更改爲我要設置的類名稱。
當我使用小寫display.setAppName
它產生在Eclipse IDE這樣的警告:
Description Resource Path Location Type
The static method setAppName(String) from the type Display should be accessed in a static way WBTest.java /javaTools/src/javaTools line 31 Java Problem
代碼示例:
package javaTools;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.wb.swt.SWTResourceManager;
public class WBTest {
private Table table;
/**
* Launch the application.
* @param args
*/
public static void main(String[] args) {
try {
WBTest window = new WBTest();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window.
*/
public void open() {
Display display = Display.getDefault();
display.setAppName("myapplication");
Shell shell = new Shell();
shell.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLACK));
shell.setSize(560, 426);
shell.setText("SWT Application");
table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);
table.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLUE));
// table.setBounds(49, 21, 241, 158);
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableItem row = new TableItem(table, SWT.NONE);
row.setText("This is a test.");
shell.open();
// shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}
我的研究顯示瞭如何在做到這一點的Python ,它的工作原理是:
#!/usr/bin/python
from gi.repository import Gtk
win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.set_wmclass ("Hello World", "Hello World")
win.set_title ("Hello World")
win.show_all()
Gtk.main()
我正在嘗試與SWT/Java做同樣的事情。 還有什麼我需要添加到此功能,使其工作,或有一個不同的功能,是專門設置應用程序的類名?