有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在JOptionPane选项对话框中使用JSlider(或其他JComponent)?

我有一个UI,我想在其中显示一个带有滑动条和消息的弹出窗口,并让用户能够在选择一个值(或不选择)后单击“确定”或“取消”。JOptionPane有各种各样的显示方法,看起来它们很有用,但我找不到多少让它们做我想做的事情

这实际上是一个我必须寻找答案的问题,我将在下面提供它。我希望它对其他人有用


共 (1) 个答案

  1. # 1 楼答案

    我能找到的例子有典型的例子缺陷:它们与我想告诉我如何做的不够接近,也没有充分解释事情是如何通过我自己来改变它们的。最后,我浏览了一个教程,其中解释了对话框中的“消息”可以是组件,JOptionPane代码可以呈现它们。这个例子使用了一个JSlider,我想也可以使用其他JComponents

    文档还讨论了如果你想“直接显示对话框”该怎么做,但我从来没有弄明白他们的意思

    我在各种形式的JOptionPane方法中跌跌撞撞地找到了以下方法:

    /**
     * display the dialog for entering the number of spots to move the first
     * marble chosen after a 7 is played. Returns 0 if the user cancelled this
     * operation.
     */
    @Override
    public int getMoveCount()
    {
        int moveCount = 0;
    
        JSlider slider = createSlider();
        JPanel sliderPanel = createSliderPanel("myMessage", slider);
        String title = "myTitle"; 
        int dialogResponse = JOptionPane.showOptionDialog
                (this,                  // I'm within a JFrame here
                 sliderPanel,
                 title,
                 JOptionPane.OK_CANCEL_OPTION,
                 JOptionPane.QUESTION_MESSAGE,
                 null, null, null
                );
        if (JOptionPane.OK_OPTION == dialogResponse) 
             { moveCount = slider.getValue(); }
        else { moveCount = 0; } // works for cancel button, red 'x', and keyboard escape key
    
        return moveCount;
    }
    
    private JSlider createSlider()
    {
        JSlider slider = new JSlider(1,7);
        slider.setMajorTickSpacing(1);
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        slider.setValue(7);                // default to 7
    
        return slider;
    }