如何用3个滑块和2个下拉列表创建JDialog?

时间:2017-05-11 19:09:58

标签: java swing user-interface jframe jdialog

我有一个现有的框架,上面有2个面板。 当用户按下JPanel上的一个JButton时,我需要通过打开一个JDialog框来处理该事件,该框允许用户设置设置 - 包括3个滑块和2个下拉列表的设置,当用户保存我需要的设置时从这个对话框中提取它们并在以后使用它们。 我是GUI的新手,在过去的两天半里,我一直在寻找创造这种东西的方法,并且我已经成功地制作了一个滑块和一个下拉列表,但是我仍然没有在框架打开时弄清楚如何处理事件,因为从我所看到的我需要一个新的JFrame,但是一个alrady打开会发生什么?另外,如何使用这些滑块和下拉列表创建此对话框?

以下是我为滑块编写的代码:

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;
  }

我希望这篇文章足够详细。 感谢!!!

1 个答案:

答案 0 :(得分:2)

如果您希望对话框的结果“仅在关闭后”,则只需在此时收集结果。从这个完整的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

image