如何将现有按钮应用于是/否按钮?
Posted
技术标签:
【中文标题】如何将现有按钮应用于是/否按钮?【英文标题】:how to apply existed buttons to yes/no button(s)? 【发布时间】:2019-10-10 17:42:53 【问题描述】:我有一个 JFrame 有“添加新用户”按钮,一个扩展 JPanel 的 AddUser 类
AddUser 类内部有名称、工作、....、添加和“清除所有”按钮
我正在使用 showOptionDialog 打开 AddUser
AddUser addPanel = new AddUser();
JButton[] temp = new JButton[1];
temp[0] = AddUser.jButton1; //this is add button
int option = JOptionPane.showOptionDialog(rootPane, addPanel,"Add new user"
,JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, temp, null);
showOptionDialog 需要 Object[] 所以我创建了 JButton[] 然后将添加按钮扔进去
它确实打开了添加窗格,但是当我单击添加按钮时,该窗格没有关闭
【问题讨论】:
我在 Panel 中创建了添加按钮,因为我想先检查该用户是否已经存在,然后再添加 【参考方案1】:如果您将 JButton 组件作为选项提供给 JOptionDialog,则需要在 Buttons 操作侦听器中手动设置用户选择的值。 这在(我从答案 2 中复制了 getOptionPane 代码)中进行了描述:
JOptionPane Passing Custom Buttons Disable ok button on JOptionPane.dialog until user gives an input下面是一些示例代码,它使用自定义 JButton 来实现 JOptionDialog:
class OptionPanetest
public static void main(String[] args)
new OptionPanetest();
protected JOptionPane getOptionPane(JComponent parent)
JOptionPane pane = null;
if (!(parent instanceof JOptionPane))
pane = getOptionPane((JComponent)parent.getParent());
else
pane = (JOptionPane) parent;
return pane;
public OptionPanetest()
JFrame testFrame = new JFrame();
testFrame.setSize(500, 500);
JPanel addPanel = new JPanel();
addPanel.setLayout(new GridLayout(1,1));
JButton testButton = new JButton("New Button");
testButton.addActionListener(e ->
System.out.println("Test Button Was Pressed");
JButton testButtonInstance = (JButton)e.getSource();
JOptionPane pane = getOptionPane(testButtonInstance);
pane.setValue(testButtonInstance);
);
testFrame.setLocationRelativeTo(null);
testFrame.setVisible(true);
Object[] options = testButton;
int option = JOptionPane.showOptionDialog(null, "This is a test", "Add Panel Test", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]);
【讨论】:
以上是关于如何将现有按钮应用于是/否按钮?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用现有 UIPageViewController 的按钮以编程方式滑动视图