2013-06-21 76 views
1

我試圖創建一個簡單的應用程序,顯示一個紅色圓圈,點擊時顯示下面的不同消息。我相信這部分代碼:爲什麼我的字符串不顯示在窗口中?

g.drawString("DO NOT PRESS", 100, 100); 

編碼正確,但是沒有文本顯示在打開的窗口上。下面是完整的代碼至今:

import java.awt.Graphics; 

import javax.swing.JFrame; 

public class BigRedButton extends JFrame { 

    public BigRedButton() { 

     setTitle("Big Red Button"); 
     setSize(500, 500); 
     setResizable(false); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

    public void graphics(Graphics g) { 

     g.drawString("DO NOT PRESS", 100, 100); 
} 
    public static void main(String[] args){ 

     new BigRedButton(); 
    } 
} 
+1

1)將'@ Override'符號添加到應該改變行爲的方法中,以檢查簽名是否正確。 2)不要設置頂級容器的大小。而是佈置內容並調用'pack()'。 –

回答

4
  1. 沒有這樣的方法graphicsJFrame,所以沒有什麼是調用它。
  2. 你應該避免直接塗刷到頂層容器上,除此之外,它們不是雙層緩衝的,塗漆時會閃爍。相反,您應該創建一個自定義組件(從JPanel之類的延伸)並覆蓋它的paintComponent方法。
  3. 你應該花時間通過Performing Custom PaintingPainting in AWT and Swing2D Graphics

而且讀取的,同時你的閱讀,你應該通過Initial Threads

修正案一讀

正如指出的由安德魯,你應該使用@Override註釋來確保你認爲你重寫的方法實際上是首先被覆蓋的方法。這將阻止程序被編譯,並節省大量的時間,試圖弄清楚爲什麼事情不按照你期望的方式工作。

+1

還要將'@ Override'符號添加到應該更改行爲的方法中,以檢查簽名是否正確。 –

相關問題