【发布时间】:2012-11-20 17:15:56
【问题描述】:
每次我移动我的 JSlider 时,我的 JDialog 框都会针对它移动的每个位置出现,我只希望它在用户尝试移动 JSlider 而不他们从我的菜单中进行选择时显示一次。我该怎么做?
public void stateChanged(ChangeEvent e)
{
if(myFrame.shape == null)
{
JOptionPane.showMessageDialog(popUp, "You should select an item first.", "Information", JOptionPane.WARNING_MESSAGE);
}
else if(myFrame.shape != null)
{
DecimalFormat df = new DecimalFormat("0.0");
float value = diameterJSlider.getValue();
String strValue = Float.toString(value);
sliderLabel.setText(strValue);
boundaryTextField.setText("" + df.format(myFrame.shape.getBoundary(value)));
areaTextField.setText("" + df.format(myFrame.shape.getArea(value)));
myTopPanel.reDraw(diameterJSlider.getValue());
}
【问题讨论】:
-
看起来你每次滑动滑块都会得到一个 NPE。
-
您可能应该禁用滑块,直到他们从您的菜单中选择某些内容。
-
你永远不应该抓到 NPE。这是不好的编程习惯。确定在 if 块中检查 null,但不像你正在做的那样。
-
实际上在他们做出选择之前取消选择 JSlider 并不是一个坏主意。谢谢。
-
啊,更好——我可以使用 setEnabled(boolean);
标签: java swing exception jdialog jslider