My aim is to make a paint type application.
Thank you for your suggestions..
but there is still error in the code.
In netbeans IDE error : ‘method addActionListener in class cannot be applied to given types’ occurs in the line button1.addActionListener(panel);
so i used it suggestion to cast it to ActionListener. so the line is button1.addActionListener((ActionListener) panel);
but still in the below ‘if statement‘ error occurs : cannot find symbol variable ‘button1’
Thanks again for your help.
here is changed code. i changed the variable names and used adapter class to make code simpler.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class r extends JPanel
{
public int x1,x2,y1,y2;
public static double SWITCH;
public r()
{
setBackground(Color.WHITE);
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent m)
{
x1=m.getX();
y1=m.getY();
repaint();
}
public void mouseReleased(MouseEvent m)
{
x1=x2=y1=y2=0;
repaint();
}
});
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent m)
{
x2=m.getX();
y2=m.getY();
repaint();
}
});
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(SWITCH == 2)
{
g.drawRect(x1, y1, x2, y2);
}
else if (SWITCH == 3)
{
g.drawOval(x1,y1,x2,y2);
}
else
{
g.drawString("qwe", x1, y1);
}
}
}
public class q extends JFrame implements ActionListener
{
public static void main(String[] args)
{
q window = new q();
window.setVisible(true);
window.setSize(1024, 800);
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cont = window.getContentPane();
cont.setLayout(new GridLayout(2,2));
r panel = new r();
JPanel BPanel = new JPanel();
cont.add(panel);
cont.add(BPanel);
BPanel.setBackground(Color.blue);
JButton button1,button2;
button1 = new JButton("Rect");
button2 = new JButton("Oval");
BPanel.add(button1);
BPanel.add(button2);
button1.addActionListener((ActionListener) panel);
button2.addActionListener((ActionListener) panel);
}
public void actionPerformed(ActionEvent a)
{
Object obj;
obj=a.getSource();
if (obj== button1)
{
SWITCH = 2;
repaint();
}
else
{
SWITCH = 3;
repaint();
}
}
}
I think your basic Java concepts are lacking.
There is no “this” reference in any static context, i.e. static void main.
Replace “this” with your instance of “r”, “z3”.
Other than that, your UI code is really all over the place, but that’s a discussion for another question.