我在AWT上關注Java : The complete reference 8th edition (JDK 7)
的示例,並且我無法在出現的窗口上顯示字符串。大小和標題設置正確,窗口出現。如果我在paint()方法的控制檯上輸出字符串,我發現它實際上被調用了幾次,但字符串沒有出現在我的應用程序的窗口中。我看不出從這個例子中分歧的地方;其實,我有點不太碼(他們增加了鼠標偵聽器和一個按鍵偵聽器):\Java AWT drawString()不顯示在窗口上
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Main {
public static void main(String[] args) {
Application app = new Application();
app.setSize(new Dimension(640, 480));
app.setTitle("This is a test");
app.setVisible(true);
}
}
class MyWindowAdapter extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
class Application extends Frame {
public Application() {
addWindowListener(new MyWindowAdapter());
}
public void paint(Graphics g) {
System.out.println("Hey hey !");
g.drawString("Test", 10, 10);
}
}
@MadProgrammer我沒有看到調用setVisible的xD應該叫super.paint()的討論 – nachokk
@nachokk +1 for'super.paint()'...但真正的問題是爲什麼AWT? – MadProgrammer
爲什麼選擇AWT而不是Swing?在[Swing extras over AWT]上看到這個答案(http://stackoverflow.com/a/6255978/418556)有很多很好的理由放棄使用AWT組件。如果您需要支持較老的基於AWT的API,請參閱[混合重量級和輕量級組件](http://www.oracle.com/technetwork/articles/java/mixing-components-433992.html)。 –