gpt4 book ai didi

java - 禁用 JOptionPane.dialog 上的确定按钮,直到用户提供输入

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:04 25 4
gpt4 key购买 nike

我需要用户输入一个名字,并且我想禁用 ok 按钮直到给出一些输入。我怎样才能禁用它...?

最佳答案

JOptionPane 允许您提供一个组件作为消息 Pane 以及可以在其上显示的控件/选项。

如果您将正确的监听器添加到消息组件,那么您应该能够影响用作选项的控件。

看看JOptionPane.showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue)

已更新

例如……

enter image description here

public class TestOptionPane05 {

public static void main(String[] args) {
new TestOptionPane05();
}

protected JOptionPane getOptionPane(JComponent parent) {
JOptionPane pane = null;
if (!(parent instanceof JOptionPane)) {
pane = getOptionPane((JComponent)parent.getParent());
} else {
pane = (JOptionPane) parent;
}
return pane;
}

public TestOptionPane05() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}

final JButton okay = new JButton("Ok");
okay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
pane.setValue(okay);
}
});
okay.setEnabled(false);
final JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
pane.setValue(cancel);
}
});

final JTextField field = new JTextField();
field.getDocument().addDocumentListener(new DocumentListener() {
protected void update() {
okay.setEnabled(field.getText().length() > 0);
}

@Override
public void insertUpdate(DocumentEvent e) {
update();
}

@Override
public void removeUpdate(DocumentEvent e) {
update();
}

@Override
public void changedUpdate(DocumentEvent e) {
update();
}
});

JOptionPane.showOptionDialog(
null,
field,
"Get",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
new Object[]{okay, cancel},
okay);
}
});
}
}

关于java - 禁用 JOptionPane.dialog 上的确定按钮,直到用户提供输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14334931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com