2016-09-28 7 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); 
    } 
} 

問題があり、それがにISNということです私は楕円形のリフレッシュを新しいサイズにする方法がわかりません。私はそれが動作するはずだと思うが、何らかの理由でボタンはpaintComponentに新しい高さと幅を解析しません。

答えて

2

actionPerformedメソッドの末尾に「repaint()」を追加するだけです。変更した部分は表示されません(たとえば、ウィンドウを最小化してから領域を再描画する場合を除きます)。

button1.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent event){ 
       height = height + 2; 
       width = width + 2; 
       repaint(); 
      } 
     }); 
関連する問題