2013-11-22 84 views
0

我是新來的Java GUI,我試圖讓這個程序顯示一個正方形,當一個按鈕被點擊。沒有反應,因爲repaint()在paintComponent上不起作用(Graphics g)。我已經搜索過,有人說使用Event調度線程,但我仍然很困惑什麼是調用paintComponent的正確方法?

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.util.*; 
public class Ham extends JFrame implements ActionListener 
{ 
    JPanel p1; 
    JButton b1; 
    public Ham(){ 
     setSize(600, 400); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     p1 = new JPanel(); 
     b1 = new JButton("Check"); 
     b1.addActionListener(this); 
     p1.add(b1); 
     add(p1, BorderLayout.NORTH); 
     setVisible(true); 
    } 

    public void actionPerformed (ActionEvent e){ 
     if(e.getSource() == b1){ 
      repaint(); 
     } 
    } 
    public void paintComponent(Graphics g){ 
     g.setColor(Color.BLUE); 
     g.fillRect(100,100,50,50);   
    } 
} 
+0

我很後悔花時間來回答這個問題。我只注意到你在論壇上提出了10個問題,而沒有必要花時間接受你問題的答案。我想你不明白我們給你的幫助。 – camickr

+0

對不起,我**只是**發現你可以這樣做, – TheEyesHaveIt

+0

確實感謝幫助。 – TheEyesHaveIt

回答

6

JFrame沒有paintComponent()方法。

自定義繪畫是通過覆蓋JPanel(或JComponent)的paintComponent()方法完成的。您還應該覆蓋面板的getPreferredSize()方法以返回合理的值。然後將面板添加到框架。

然後可以調用所述面板和所述的paintComponent()方法將被調用上repaint()

閱讀從Custom Painting Swing的教程詳細信息和示例部分。

相關問題