我是比較新的Java,我只是想編寫一個圖形用戶界面,當按下按鈕時繪製一個框。我的問題是,我的程序在按下按鈕之前繪製了框,我不知道如何解決這個問題。爲什麼在按下按鈕之前繪製一個框?
這是我的控制器類:
import java.awt.*;
import javax.swing.*;
import java.awt.event.* ;
public class TestController extends JFrame {
private JButton enterButton;
private JPanel buttonHolder;
private Container contentPane;
private TestView view;
public TestController() {
contentPane = getContentPane();
enterButton = new JButton("Enter");
buttonHolder = new JPanel();
buttonHolder.setPreferredSize(new Dimension (600, 100));
contentPane.add(buttonHolder, BorderLayout.SOUTH);
buttonHolder.add(enterButton);
view= new TestView();
view.setPreferredSize(new Dimension (125, 125));
contentPane.add(view, BorderLayout.CENTER);
enterButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
view.repaint();
}
});
}
public static void main(String[] args) {
TestController bc = new TestController() ;
bc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
bc.pack();
bc.setVisible(true) ;
}
}
這是我的觀點類:
import java.awt.* ;
import java.awt.geom.*;
import javax.swing.* ;
public class TestView extends JPanel {
public TestView() {}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2= (Graphics2D) g;
Rectangle2D rect= new Rectangle2D.Double(0, 0, 30, 30);
g2.setPaint(Color.CYAN);
g2.fill(rect);
}
}
謝謝!我仍然不明白爲什麼它在按鈕被按下之前畫框。 – user1676471 2013-04-05 23:55:10
@ user1676471檢查我編輯的答案 – 2013-04-06 11:19:59