我有一个UI,我想在其中显示带有滑块的弹出窗口,带有消息,让用户可以在选择值后单击“确定”或“取消”(或不选择)。 JOptionPane有各种各样的show方法,看起来它们很有用,但是我找不到让它们做我想做的事情。
这实际上是一个我必须找到答案的问题,我将在下面提供。我希望它对其他人有用。
答案 0 :(得分:2)
我能够找到的例子有标准的例子:它们与我想告诉我怎么做的不够接近,并且没有足够的解释如何在我的工作上改变它们拥有。我终于遇到了一个教程,它解释了对话框中的“消息”可能是组件,而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;
}