Reputation: 299
I'm writing a piece of code to add and define a mousemotion listener but the complier report the error to the following code: " class CustomListener is public, should be declared in a file named CustomListener.java public class CustomListener implements MouseMotionListener { ^ 1 error " I have no idea what does it mean.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TetrisGUI implements ActionListener{
JButton quit = new JButton();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JLabel label3 = new JLabel();
JPanel mainArea = new JPanel();
public static void main(String[] args) {
TetrisGUI gui = new TetrisGUI();
gui.go();
}
public void go() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
quit = new JButton("QUIT");
label1 = new JLabel("Level: 1");
label2 = new JLabel("Lines: 0");
label3 = new JLabel("Score: 0");
quit.addActionListener(this);
mainArea.addMouseMotionListener(new CustomListener(){});
MyDrawPanel drawPanel = new MyDrawPanel();
frame.getContentPane().add(quit);
frame.getContentPane().add(label1);
frame.getContentPane().add(label2);
frame.getContentPane().add(label3);
frame.getContentPane().add(mainArea);
frame.getContentPane().add(BorderLayout.CENTER,drawPanel);
label1.setSize(100,200);
label1.setLocation(310,60);
label2.setSize(100,200);
label2.setLocation(310,110);
label3.setSize(100,200);
label3.setLocation(310,160);
mainArea.setSize(250,500);
mainArea.setLocation(20,50);
quit.setSize(100,40);
quit.setLocation(300,310);
frame.setSize(400,500);
frame.setVisible(true);
mainArea.setBackground(new Color(0,0,0,0));
mainArea.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
}
class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.black);
g.drawRect(20,50,250,500);//Main Area
g.drawRect(300,50,100,70);//NextShape
g.drawRect(145,80,25,25);//Tian Block
g.drawRect(145,105,25,25);
g.drawRect(120,80,25,25);
g.drawRect(120,105,25,25);
Color deepGreen = new Color(51,138,52);
g.setColor(deepGreen);
g.fillRect(121,81,24,24);//Tian Block
g.fillRect(121,106,24,24);
g.fillRect(146,81,24,24);
g.fillRect(146,106,24,24);
g.setColor(Color.black);
g.drawRect(245,525,25,25);//Right bottom
g.drawRect(220,525,25,25);
g.drawRect(195,525,25,25);
g.drawRect(170,525,25,25);
g.drawRect(245,500,25,25);
g.drawRect(245,475,25,25);
g.drawRect(220,500,25,25);
g.drawRect(195,500,25,25);
Color deepBlue = new Color(15,66,148);
g.setColor(deepBlue);
g.fillRect(246,526,24,24);
g.fillRect(221,526,24,24);
g.fillRect(246,501,24,24);
g.fillRect(246,476,24,24);
Color brightYellow = new Color(252,238,33);
g.setColor(brightYellow);
g.fillRect(196,526,24,24);
g.fillRect(171,526,24,24);
g.fillRect(196,501,24,24);
g.fillRect(221,501,24,24);
//NextShape Blocks
g.setColor(Color.black);
g.drawRect(360,60,25,25);
g.drawRect(335,85,25,25);
g.drawRect(360,85,25,25);
g.drawRect(310,85,25,25);
Color deepRed = new Color(227,23,36);
g.setColor(deepRed);
g.fillRect(361,61,24,24);
g.fillRect(336,86,24,24);
g.fillRect(361,86,24,24);
g.fillRect(311,86,24,24);
}
}
public class CustomListener implements MouseMotionListener {
public void mousePressed(MouseEvent me){}
public void mouseReleased(MouseEvent me){}
public void mouseClicked(MouseEvent me){}
public void mouseEntered(MouseEvent me){
}
public void mouseExited(MouseEvent me){}
}
Upvotes: 1
Views: 113
Reputation: 380
In java every public class have to be defined in a separate file. Move the class 'CustomListener' to a different file with the same name or just remove public modifier.
Upvotes: 3