2015-11-04 19 views
0

我正尝试在java中创建一个小绘图工具。我想要用户使用的颜色来选择按钮时进行更改。我试图设置我的按钮来做到这一点。但是当我运行应用程序并选择一个按钮时,颜色不会改变。我怎样才能解决这个问题?Java代码:创建绘制应用程序

myJPanel.java

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class myJPanel extends JPanel implements MouseMotionListener, ActionListener 
{ 
    JButton red, blue, yellow, eraser; 
    JPanel p1; 
    Graphics gg; 
    public myJPanel() 
    { 
     setBackground(Color.white); 
     setLayout(new BorderLayout()); 
     p1 = new JPanel(); 
     p1.setLayout(new GridLayout(3,3)); 
     red = new JButton("Red"); 
     blue = new JButton("Blue"); 
       yellow = new JButton("Yellow"); 
     eraser = new JButton("Eraser"); 
     p1.add(red); 
     p1.add(blue); 
       p1.add(yellow); 
     p1.add(eraser); 
     add(p1,"South"); 

       addMouseMotionListener(this); 
    } 

    public void mouseMoved(MouseEvent evt) 
    { 

    } 


    public void mouseDragged(MouseEvent evt) 
    { 
     Point pt = evt.getPoint(); 
     int x = pt.x; 
     int y = pt.y; 
     Graphics gg = getGraphics(); 
     gg.setColor(Color.GREEN); 
     gg.fillRect(x, y, 5, 5); 
    } 

    @Override 
     public void actionPerformed(ActionEvent event) 
     { 

      Object obj = event.getSource(); 
    String choice = event.getActionCommand(); 

      if (obj == red) { 
     gg.setColor(Color.red); 
    } 

    if (obj == blue) { 
     gg.setColor(Color.blue); 
     } 


    if (obj == yellow) { 
     gg.setColor(Color.yellow); 
    } 
    if (obj == eraser) { 
     gg.setColor(Color.white); 
    } 
      } 


} 
+0

不要使用'的getGraphics()'上一个组件来获得你的图形。在教程将向您展示的JPanel的paintComponent方法内绘制。 –

回答

0

您使用的是不使用油漆图形。

不管,不画这个样子,覆盖paintComponent方法,使其画你喜欢什么,并呼吁repaint当你需要图纸来进行:

public class myJPanel extends JPanel implements MouseMotionListener, ActionListener 
{ 
    JButton red, blue, yellow, eraser; 
    JPanel p1; 
    Color currentColor; 
    int x, y; 
    public myJPanel() { 
     setBackground(Color.white); 
     setLayout(new BorderLayout()); 
     p1 = new JPanel(); 
     p1.setLayout(new GridLayout(3,3)); 
     yellow = new JButton("Yellow"); 
     eraser = new JButton("Eraser"); 
     p1.add(yellow); 
     p1.add(eraser); 
     add(p1,"South"); 
     addMouseMotionListener(this); 
    } 

    public void paintComponent(Graphics g) { // draw something on request 
     g.setColor(currentColor); 
     g.fillRect(x, y, 5, 5); 
    } 
    public void mouseDragged(MouseEvent evt) 
    { 
     Point pt = evt.getPoint(); 
     x = pt.x; 
     y = pt.y; 
     repaint(); // a new point to draw, please call me back... 
    } 

    @Override 
    public void actionPerformed(ActionEvent event) { 
     Object obj = event.getSource(); 
     String choice = event.getActionCommand(); 

     if (obj == yellow) { 
     currentColor = Color.yellow); 
     } 
     if (obj == eraser) { 
     currentColor = Color.white); 
     } 
    } 
}