好的,我真的希望能够在我的卢布上添加多行(textarea)InputDialog。
我已经解决了Ruble :: UI中的限制并创建了我自己的模块,当我想要更多然后是Ruble :: UI提供的默认对话框时,我用卢布加载。因此,我已经能够添加多选对话框,甚至可以通过创建一个覆盖类来获得Multiline InputDialog,然后将getTextStyle方法传递给我自己的值以使其成为多行。
问题在于对话框显示一个多行文本框,但它的高度仍然设置为一行,所以它基本上只是一个行框。我从Eclipse插件开发者知道如何在Java中创建多行对话框,我无法弄清楚如何使用jruby在卢布中实现它。
这是我目前在ruby中的代码
class MultiInputDialog < org.eclipse.jface.dialogs.InputDialog
def getInputTextStyle
org.eclipse.swt.SWT::MULTI | org.eclipse.swt.SWT::BORDER | org.eclipse.swt.SWT::V_SCROLL
end
end
以下是用Java编写的代码。
InputDialog dlg = new InputDialog(Display.getCurrent().getActiveShell(), "Test", "Please input text.",
"Test-Text", null) {
/**
* Override this method to make the text field multilined
* and give it a scroll bar. But...
*/
@Override
protected int getInputTextStyle() {
return SWT.MULTI | SWT.BORDER | SWT.V_SCROLL;
}
/**
* ...it still is just one line high.
* This hack is not very nice, but at least it gets the job done... ;o)
*/
@Override
protected Control createDialogArea(Composite parent) {
Control res = super.createDialogArea(parent);
((GridData) this.getText().getLayoutData()).heightHint = 100;
return res;
}
};
dlg.open();
所以你可以看到我已经想出如何覆盖getInputTextStyle,但是我试图模仿createDialogArea()的覆盖已经失败了。任何建议或帮助将不胜感激
答案 0 :(得分:0)
试试这个:
class MultiInputDialog < org.eclipse.jface.dialogs.InputDialog
def getInputTextStyle
org.eclipse.swt.SWT::MULTI | org.eclipse.swt.SWT::BORDER | org.eclipse.swt.SWT::V_SCROLL
end
def createDialogArea(parent)
control = super(parent)
getText.getLayoutData.heightHint = 100;
control
end
end
干杯, 最大