已弃用的方法,改用什么



该方法show();在 Windows for java.awt 类中 已弃用。我可以使用什么代替?

package adventure;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.net.URL;
import java.net.MalformedURLException;
import java.io.*;
import java.applet.*;
// Infogar testkommentar mvh Holger 2012-06-20 kl 19.03
public class Adventure extends Frame  {
    private static final long serialVersionUID=100L;
    public Adventure() {        
    setSize(850, 440);    
    World world = new DungeonWorld ( this );        
    Person me = new Person( world, "You", null );    
    show();
    me.goTo("Dungeon");     
    add( new Player( world, me ) );    
    addWindowListener(new MyWindowAdapter ());    
    }
    class MyWindowAdapter extends WindowAdapter {
    public void windowClosing (WindowEvent e) {
        System.exit(0);
    }
    }

    // Load an image from the net, making sure it has already been
    // loaded when the method returns
    public Image loadPicture ( String imageName ) {
    Image im = null;
    // Load the image from the net
    try {
        URL imageSource = new URL( "http://www...xxx/"
                       + imageName );
        try {
        im = createImage( (ImageProducer) imageSource.getContent());
        } catch (IOException e) {}
    } catch (MalformedURLException e ) { }
    // Wait to ensure that the image is loaded
    MediaTracker imageTracker = new MediaTracker( this );
    imageTracker.addImage( im, 0 );
    try {
        imageTracker.waitForID( 0 );
    }
    catch( InterruptedException e ) { }
    return im;
    }

    // Load and play a sound from /usr/local/hacks/sounds/
    public void playSound (String name) {
    URL u = null;
    try {
        u = new URL("file:" +  "/usr/local/hacks/sounds/" + name + ".au");
    } catch (MalformedURLException e ) { }
    AudioClip a = Applet.newAudioClip(u);
    a.play();
    }
    public static void main (String[] args) {       
    System.out.println("test"); 
      new Adventure();
    }
}

让我们阅读 Java API for Window#show() : 这里

@Deprecated
public void show()

荒废的。从 JDK 版本 1.5 开始,替换为 setVisible(boolean) .

使窗口可见。如果窗口和/或其所有者尚未 可显示,两者都是可显示的。窗口将被验证 在可见之前。如果窗口已经可见,则此 将窗口带到前面。

所以你应该使用Window#setVisible(boolean) - 为了show()使用setVisible(true).

编辑

在某些环境中,只需将show()替换为setVisible(true)就会更改应用程序的行为。当您编写覆盖show()Window 子类时,就会发生这种情况(hide() 也是如此)。

所以在你的代码示例中,setVisible(true)show()完全相同。但总的来说,只要确定,没有人会覆盖使用setVisible(true)时不会再执行的show()。在这种情况下,您还必须更改重写的方法。

如果您检查 API,您将看到:

void show()       

荒废的。从JDK版本1.5开始,替换为setVisible(boolean)

相关内容

  • 没有找到相关文章

最新更新