3

每次我移动我的 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());
  }
4

1 回答 1

0

但是每次 JSlider 移动一个位置时,它都会为它移动的每个位置显示 JDialog 框。如果你移动它 20 次,你会得到 JDialog 20 次。我该如何解决这个问题,让它只出现一次?

您可以尝试忽略调整事件,以获得所需的行为。

  public void stateChanged(ChangeEvent e) {
    JSlider source = (JSlider)e.getSource();
    if (!source.getValueIsAdjusting()) {
      // your code
    }
  }
于 2012-11-26T10:30:50.980 回答