2017-12-02 12 views
-1

私がしようとしているのは、ボタンをクリックすると四角形を描く必要があるということです。イベント処理でJavaグラフィックを使用するにはどうすればよいですか?

しかし、私はいくつかの混乱を抱えています。 、問題がある今

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


public class Mainting extends JPanel { 

    @Override 
    public void paintComponent(Graphics g) 
      { 
     super.paintComponent(g); 
     g.fillRect(0,0,30,30); 

      }  
} 

私はボタンが画面全体をカバーしたとき、私はそれをクリックして表示されますこのコードを実行すると、:

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

public class Painting { 

    JFrame jf ; 
    public static void main(String[] args) {  
     Painting p = new Painting(); 
     p.runn(); 
    } 
     public void runn(){ 

     jf = new JFrame("Try"); 
     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     jf.setLocationRelativeTo(null); 
     jf.setSize(400,400);  
     jf.setVisible(true); 

     JButton jb = new JButton("Click"); 
     jb.setBounds(200,200,100,60); 
     jf.add(jb); 
     //jf.add(jb,BorderLayout.SOUTH); 
     //jf.setLayout(null);  
     Handler handle = new Handler(); 
     jb.addActionListener(handle); 
     } 
     private class Handler implements ActionListener{ 
      @Override 
      public void actionPerformed(ActionEvent ae) 
      { 
      Mainting maint = new Mainting();  
      jf.add(maint); 
     }   


} 
} 

およびその他のクラス: は、ここでは、コードです何も起こりません。 レイアウトマネージャが定義されていないため、レイアウトマネージャをnullに設定しようとすると、ボタンが正常に表示されますが、これをクリックすると、四角形が表示されません(また、ヌルレイアウトマネージャを使用してグラフィックスを描く)。

最後に、レイアウトマネージャーを設定しようとすると、ボタンが表示されるようになりますが、コンパイラーはintのパラメータを描画する必要があり、方向性は必要としません。

助けてください!

+0

1)インデントするコード行とブロックの論理的で一貫した形式を使用します。インデントは、コードの流れをより簡単にするためのものです。誰かが最後の質問でそれを親切にしてくれましたが、コードを読んだ人のために何をしなければならないのでしょうか、他人があなたのために常にやり遂げることを期待しないでください。 2)あなたの[最後の質問]への回答として投稿されたように、より良い助けを早く得るために、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください(https: //stackoverflow.com/a/47605791/418556)。 –

答えて

0

JPanelを使用し、ボタンを追加します。 Swing.SomethingでsetBounds()がうまく動作しないこのように -

JButton button = new JButton(...); 
JPanel wrapper = new JPanel(); 
wrapper.add(button); 
frame.add(wrapper, BorderLayout.PAGE_START); 
関連する問題