2016-09-28 81 views
1

我需要調整Java中的繪製橢圓形的,我創建了此代碼:如何在Java中調整繪製的橢圓形?

FrameView.java

package tutorial; 

import java.awt.*; 
import javax.swing.*; 

public class FrameView{ 
    public static void main(String args[]){ 
     JFrame f = new JFrame(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     BallCreation c = new BallCreation(); 
     f.add(c); 
     f.setSize(500, 500); 
     f.setVisible(true); 
    } 
} 

BallCreation.java

package tutorial; 

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class BallCreation extends JPanel{ 
    private static final long serialVersionUID = 1L; 
    private int height = 10; 
    private int width = 10; 
    private JPanel panel; 
    private JButton button1; 

    public BallCreation(){ 
     panel = new JPanel(); 

     button1 = new JButton("Click"); 
     add(button1); 

     button1.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent event){ 
       height = height + 2; 
       width = width + 2; 
      } 
     }); 


    } 

    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     this.setBackground(Color.WHITE); 

     g.setColor(Color.GREEN); 
     g.fillOval(10, 10, width, height); 
    } 
} 

的問題是在於,它不是沒有工作,我不知道如何讓橢圓形刷新到新的尺寸。我認爲它應該可以工作,但由於某種原因,按鈕不會解析新的高度和寬度到paintComponent

回答

2

只需在actionPerformed方法的末尾添加一個repaint(),否則您將看不到更改(除非最小化然後恢復窗口,例如強制重繪該區域)。

button1.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent event){ 
       height = height + 2; 
       width = width + 2; 
       repaint(); 
      } 
     });