РЕДАКТИРОВАТЬ: @Hovercraft Full of Eels обеспечивают лучшее решение;более вероятно, что ищет ОП.
Из JOptionPane javadocs :
Все диалоги являются модальными.Каждый метод showXxxDialog блокирует вызывающего до тех пор, пока взаимодействие с пользователем не будет завершено.
Так что нет, вы не сможете достичь желаемой функциональности с помощью JOptionPane
.Но JOptionPane
- это удобный класс для создания немногих часто встречающихся JDialog
с.Поскольку требуемая функциональность напрямую не поддерживается JOptionPane
s, вам следует рассмотреть возможность ее реализации напрямую, используя JDialog
s.Например:
public class DialogTest {
static final SimpleDateFormat SDF = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
public static void main(String[] args) {
final JFrame frame = new JFrame("Dialog test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createPanelToPopDialog(frame));
frame.setSize(500, 200);
frame.show();
}
static JPanel createPanelToPopDialog(final JFrame parent) {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JButton button = new JButton("Pop a Dialog");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialog dialog = new JDialog(parent, true);
dialog.add(createPanelToPopDialog(parent));
dialog.setSize(500, 200);
dialog.show();
}
});
panel.add(button, BorderLayout.SOUTH);
panel.add(new JLabel("Created at " + SDF.format(new Date())));
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return panel;
}
}