I make a drawing on Swing, I want to set three buttons that would change the thickness of the line to be drawn. Probably, I'm doing something wrong with addActionListener . Knocks out NOP on those things where gg.setStroke(new BasicStroke(10)); will be used gg.setStroke(new BasicStroke(10)); :
public class PPanel extends JPanel implements MouseListener, MouseMotionListener, ActionListener { int x; int y; Graphics2D gg = (Graphics2D) this.getGraphics(); public PPanel() { setBackground(Color.white); addMouseListener(this); addMouseMotionListener(this); btn1.addActionListener(this); btn5.addActionListener(this); btn10.addActionListener(this); add(btn10); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == btn10) { gg.setStroke(new BasicStroke(10)); } } JButton btn1 = new JButton(); JButton btn5 = new JButton(); JButton btn10 = new JButton(); @Override public void mouseClicked(MouseEvent e) { gg.drawOval(e.getX(), e.getY(), 10, 10); } @Override public void mouseEntered(MouseEvent e) { //setBackground(Color.black); //repaint(); } @Override public void mouseExited(MouseEvent e) { //setBackground(Color.white); //repaint(); } @Override public void mousePressed(MouseEvent e) { x = e.getX(); y = e.getY(); } @Override public void mouseReleased(MouseEvent e) { Graphics2D gg = (Graphics2D) this.getGraphics(); gg.setColor(Color.green); gg.drawLine(x, y, e.getX(), e.getY()); } @Override public void mouseDragged(MouseEvent e) { gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); int firstX = e.getX(); int firstY = e.getY(); gg.drawLine(firstX, firstY, e.getX(), e.getY()); } @Override public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub }