2016-10-29 6 views
2

私はこれを既に投稿しており、いくつかの進歩を遂げましたが、ボタンはまだ動作していませんが、近いと思います。誰かが、それを完全に機能させるために何を変更する必要があるか教えてもらえますか?クリックすると線の色を変えることになっています。ありがとう!JButtonがラインの色を変更しようとしていません

JButton action =new JButton(); 
JButton red = new JButton(); 
JButton blue = new JButton(); 

public SimplePaint() { 

blue.setBackground(Color.BLUE);  
panel.add(blue); 

red.setBackground(Color.RED); 
    panel.add(red); 

} 

public void paint(Graphics g) { 
super.paint(g); 
Graphics2D g2 = (Graphics2D) g; 
Line2D line = new Line2D.Float(0, 250, 2000, 300); 
g2.setColor(Color.MAGENTA); 
g2.setStroke(new BasicStroke(3)); 
g2.draw(line);  

action.addActionListener(new ActionListener() {  
    public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == blue) { 
     g2.setColor(Color.BLUE); 
    } 
    else if(e.getSource() == red) { 
     g2.setColor(Color.RED); 
    } 
    repaint(); 
     } 
    }); 

} 

答えて

1

これは方法ではありません。ボタンをクリックするとペイントメソッドが実行され、マゼンタ色の線をもう一度描画します。色の値をグローバル変数/フィールドに移動し、その値をactionPerformedで変更し、repaintを呼び出します。

もう1つのことは、paintメソッドでaddActionListenerを呼び出すべきではなく、何がJButtonであるのかわからないということです。とにかくこれをチェックしたいかもしれません(しかし、テストされていません):

JButton red = new JButton(); 
JButton blue = new JButton(); 
Color color = Color.MAGENTA; 

public SimplePaint() { 

    blue.setBackground(Color.BLUE);  
    panel.add(blue); 

    red.setBackground(Color.RED); 
    panel.add(red); 

    ActionListener actionListener = new ActionListener() {  
     public void actionPerformed(ActionEvent e) { 
      if (e.getSource() == blue) { 
       color = Color.BLUE; 
      } else if (e.getSource() == red) { 
       color = Color.RED; 
      } 
      repaint(); 
     } 
    }; 

    blue.addActionListener(actionListener); 
    red.addActionListener(actionListener); 
} 

public void paint(Graphics g) { 
    super.paint(g); 
    Graphics2D g2 = (Graphics2D) g; 
    Line2D line = new Line2D.Float(0, 250, 2000, 300); 
    g2.setColor(color); 
    g2.setStroke(new BasicStroke(3)); 
    g2.draw(line); 
} 
+0

それは完璧に動作します!どうもありがとうございます! :) – Millie

+0

答えを受け入れることを自由に感じて;) – maszter

+0

はい先生、ありがとう! :D – Millie

関連する問題