intellij 插件开发显示带有多个文本框的输入对话框
intellij plugin development show input dialog with multiple text boxes
我正在创建 intelliJ 插件并注册我的操作,在我的操作中我想显示一个包含多个文本框的输入对话框,我该怎么做?
我有一个只显示一个文本框的例子 -
String txt= Messages.showInputDialog(project, "What is your name?",
"Input your name", Messages.getQuestionIcon());
创建一个新的 GUI 窗体(窗体 + class)。 Class 应该扩展 DialogWrapper
并覆盖方法。
在 createCenterPanel()
return 您的根 JPanel 中。在 returning JPanel 之前,您可以设置任何默认值、向文本框添加事件侦听器等。
实现一个 Action
界面,您希望在单击“确定”按钮时获取该界面的值。将此操作传递给您的表单 class.
getOKAction()
应该 return 这个动作。
以下代码来自我目前正在开发的插件。希望这会给您一些想法,但必须根据您的需要进行调整。
public class ReleaseNoteDialog extends DialogWrapper implements Action {
private JTextArea txtReleaseNote;
private JPanel panelWrapper;
.......
protected JComponent createCenterPanel() {
......
return panelWrapper;
}
......
@Override
protected Action getOKAction() {
return this;
}
.......
@Override
public void actionPerformed(ActionEvent e) {
// save value to project state
super.doOKAction();
}
我同意@AKT 扩展 DialogWrapper
但建议覆盖 doOKAction
:
@Override
protected void doOKAction() {
if (getOKAction().isEnabled()) {
// custom logic
System.out.println("custom ok action logic");
close(OK_EXIT_CODE);
}
}
或者,如果您只想在不使用 Action 的情况下输出数据,请添加自定义方法:
public class SearchDialog extends DialogWrapper {
...
public String getQuery() {
return "my custom query";
}
}
您可以像这样使用它:
SearchDialog dialog = new SearchDialog();
dialog.showAndGet(); // Maybe check if ok or cancel was pressed
String myQuery = dialog.getQuery();
System.out.println("my query: " + myQuery);
我正在创建 intelliJ 插件并注册我的操作,在我的操作中我想显示一个包含多个文本框的输入对话框,我该怎么做? 我有一个只显示一个文本框的例子 -
String txt= Messages.showInputDialog(project, "What is your name?",
"Input your name", Messages.getQuestionIcon());
创建一个新的 GUI 窗体(窗体 + class)。 Class 应该扩展 DialogWrapper
并覆盖方法。
在 createCenterPanel()
return 您的根 JPanel 中。在 returning JPanel 之前,您可以设置任何默认值、向文本框添加事件侦听器等。
实现一个 Action
界面,您希望在单击“确定”按钮时获取该界面的值。将此操作传递给您的表单 class.
getOKAction()
应该 return 这个动作。
以下代码来自我目前正在开发的插件。希望这会给您一些想法,但必须根据您的需要进行调整。
public class ReleaseNoteDialog extends DialogWrapper implements Action {
private JTextArea txtReleaseNote;
private JPanel panelWrapper;
.......
protected JComponent createCenterPanel() {
......
return panelWrapper;
}
......
@Override
protected Action getOKAction() {
return this;
}
.......
@Override
public void actionPerformed(ActionEvent e) {
// save value to project state
super.doOKAction();
}
我同意@AKT 扩展 DialogWrapper
但建议覆盖 doOKAction
:
@Override
protected void doOKAction() {
if (getOKAction().isEnabled()) {
// custom logic
System.out.println("custom ok action logic");
close(OK_EXIT_CODE);
}
}
或者,如果您只想在不使用 Action 的情况下输出数据,请添加自定义方法:
public class SearchDialog extends DialogWrapper {
...
public String getQuery() {
return "my custom query";
}
}
您可以像这样使用它:
SearchDialog dialog = new SearchDialog();
dialog.showAndGet(); // Maybe check if ok or cancel was pressed
String myQuery = dialog.getQuery();
System.out.println("my query: " + myQuery);