2012-06-21 2 views
2

Метод show(); в классе Windows для 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(); 
    } 
} 
+2

Как вы знаете, этот метод устарел, вы должны иметь некоторый доступ к API. Если вы прочитаете первую фразу, вы увидите, что использовать вместо этого ... – brimborium

+2

Я думаю, вы должны сначала начать читать Javadoc. –

+2

Я знаю, что есть документация, но мне нужен ответ от человека. Иногда человек знает больше, чем документацию. Например, есть недокументированные материалы здесь и там. Спасибо за комментарии. –

ответ

16

Давайте читать API Java для Window#show(): here

@Deprecated 
public void show() 

осуждается. Начиная с версии JDK версии 1.5, она заменяется на setVisible(boolean).

Делает окно видимым. Если окно и/или его владелец еще не отображаются , то оба изображения становятся видимыми. Окно будет проверено перед тем, как сделать видимым. Если Окно уже видно, это приведет окно вперед.

Таким образом, вы должны использовать Window#setVisible(boolean) - для show() использования setVisible(true).

РЕДАКТИРОВАТЬ

В некоторых средах просто заменить show() с setVisible(true) изменяет поведение приложения. Это происходит, когда вы написали подкласс Window, который переопределяет show() (то же самое для hide()).

Так что в вашем примере кода setVisible(true) делает то же самое, что и show(). Но в целом, просто убедитесь, что никто не переопределяет show(), который больше не будет выполнен при использовании setVisible(true). В таком случае вы также должны изменить методы переопределения.

5

Если вы проверяете API вы увидите:

void show()  

осуждается. Начиная с версии JDK версии 1.5, она заменяется на setVisible(boolean).