如何创建具有 3 个滑块和 2 个下拉列表的 JDialog?
How to create JDialog with 3 sliders and 2 drop lists?
我有一个现有的框架,上面有 2 个面板。
当用户按下在 JPanel 上找到的 JButton 之一时,我需要通过打开一个 JDialog 框来处理该事件,该框允许用户设置设置 - 设置包括 3 个滑块和 2 个下拉列表,当用户保存我需要的设置时从这个对话框中拉出它们并在以后使用它们。
我是 GUI 的新手,在过去的 2 天半里,我已经搜索了很多方法来创建这样的东西,而且我已经成功地分别制作了一个滑块和一个下拉列表,但我仍然没有'想出如何在框架打开时处理事件,因为据我所知,我需要一个新的 JFrame,但是已经打开的 JFrame 会怎样?此外,如何使用这些滑块和下拉列表制作此对话框?
这是我为滑块编写的代码:
public void setSlider()
{
optionPane = new JOptionPane();
JSlider slider = getSlider(optionPane);
JSlider slider2=getSlider(optionPane);
optionPane.setMessage(new Object[] { "Select animal's speed: ", slider });
optionPane.setMessageType(JOptionPane.QUESTION_MESSAGE);
optionPane.setOptionType(JOptionPane.OK_CANCEL_OPTION);
dialog = optionPane.createDialog(Frame, "Set speed");
dialog.pack();
dialog.setVisible(true);
int speed = (int) optionPane.getInputValue();
}
static JSlider getSlider(final JOptionPane optionPane) {
JSlider slider = new JSlider();
slider.setMajorTickSpacing(1);
slider.setMaximum(10);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
ChangeListener changeListener = new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
JSlider theSlider = (JSlider) changeEvent.getSource();
if (!theSlider.getValueIsAdjusting()) {
optionPane.setInputValue(new Integer(theSlider.getValue()));
}
}
};
slider.addChangeListener(changeListener);
return slider;
}
我希望这个 post 足够详细。
谢谢!!!
如你所愿对话的结果"only after it closes,"只需收集当时的结果即可。从这个完整的 example 开始,以下更新会产生所示的输出和外观:
…
JSlider slider = new JSlider();
panel.add(slider);
int result = JOptionPane.showConfirmDialog(null, panel, "Test",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
System.out.println(combo.getSelectedItem()
+ " " + field1.getText()
+ " " + field2.getText()
+ " " + slider.getValue());
} else {
…
One 1234.56 9876.54 50
我有一个现有的框架,上面有 2 个面板。 当用户按下在 JPanel 上找到的 JButton 之一时,我需要通过打开一个 JDialog 框来处理该事件,该框允许用户设置设置 - 设置包括 3 个滑块和 2 个下拉列表,当用户保存我需要的设置时从这个对话框中拉出它们并在以后使用它们。 我是 GUI 的新手,在过去的 2 天半里,我已经搜索了很多方法来创建这样的东西,而且我已经成功地分别制作了一个滑块和一个下拉列表,但我仍然没有'想出如何在框架打开时处理事件,因为据我所知,我需要一个新的 JFrame,但是已经打开的 JFrame 会怎样?此外,如何使用这些滑块和下拉列表制作此对话框?
这是我为滑块编写的代码:
public void setSlider()
{
optionPane = new JOptionPane();
JSlider slider = getSlider(optionPane);
JSlider slider2=getSlider(optionPane);
optionPane.setMessage(new Object[] { "Select animal's speed: ", slider });
optionPane.setMessageType(JOptionPane.QUESTION_MESSAGE);
optionPane.setOptionType(JOptionPane.OK_CANCEL_OPTION);
dialog = optionPane.createDialog(Frame, "Set speed");
dialog.pack();
dialog.setVisible(true);
int speed = (int) optionPane.getInputValue();
}
static JSlider getSlider(final JOptionPane optionPane) {
JSlider slider = new JSlider();
slider.setMajorTickSpacing(1);
slider.setMaximum(10);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
ChangeListener changeListener = new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
JSlider theSlider = (JSlider) changeEvent.getSource();
if (!theSlider.getValueIsAdjusting()) {
optionPane.setInputValue(new Integer(theSlider.getValue()));
}
}
};
slider.addChangeListener(changeListener);
return slider;
}
我希望这个 post 足够详细。 谢谢!!!
如你所愿对话的结果"only after it closes,"只需收集当时的结果即可。从这个完整的 example 开始,以下更新会产生所示的输出和外观:
…
JSlider slider = new JSlider();
panel.add(slider);
int result = JOptionPane.showConfirmDialog(null, panel, "Test",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
System.out.println(combo.getSelectedItem()
+ " " + field1.getText()
+ " " + field2.getText()
+ " " + slider.getValue());
} else {
…
One 1234.56 9876.54 50