public void paint(Graphics g) {
    myWidth = getSize().width; // get this Applet size
    myHeight = getSize().height;
    double xCoord, yCoord;
    int yPixel;
    String str = JOptionPane.showInputDialog("Enter your name.");
    g.drawString(str, 100, 100);

    for (int xPixel = 0; xPixel < myWidth; xPixel++) {
        xCoord = (double) (xPixel - myYAxisHPos) / myXUnitPixels;
        yCoord = f(xCoord);
        yPixel = (int) (myXAxisVPos - yCoord * myYUnitPixels);
        g.drawLine(xPixel, yPixel, xPixel, yPixel);
    }
}


我想知道为什么启动小程序时它会打开两次。任何帮助,将不胜感激。

最佳答案

public void paint(Graphics g)
 {
 ..
 String str = JOptionPane.showInputDialog("Enter your name.");


切勿在paint(Graphics)方法内更改GUI或弹出模式对话框!后者将阻塞EDT,并且两者都将导致循环。


  我想知道为什么启动小程序时它会打开两次


Paint可以随时调用,它不在程序员的控制范围内。

相反,应将方法移至init()方法,并将结果存储为类属性。

就像是:

String str = null;

@Override
public void init() {
  str = JOptionPane.showInputDialog("Enter your name.");
  //..
}

07-24 20:34