The professional, friendly Java community. 21,500 members and growing!

The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.

Re: Add drawing function MouseMotionEventListener program?

You need to post a complete program if you want anyone to help with the testing.

What code calls the paint() method in the code? That method does not override the Component class's paint method and will not be called by the java program. See the API doc for the correct signature for the method's definition.

Use the @Override notation on a line before the definition of any methods that you are trying to override to have the compiler check that the override is valid.

Also be sure to wrap your code with
[code=java]
<YOUR CODE HERE>
[/code]
to get highlighting and preserve formatting.

There's the complete code; like I said I'm not very good with java so I honestly barely know where to start. I've looked up tons of stuff on paint() and Graphics g and such, and I've gotten it to work by itself (just a simple whiteboard app), but I cannot seem to get it to work here. I think the problem is I just don't know where exactly to put things

Re: Add drawing function MouseMotionEventListener program?

Did you read all of my last post? There is a link to the tutorial you should read.
If you have questions about the rest of my last post you need to ask. Otherwise I assume you understand what I said and are going to change your program to fix the problems I pointed out.

Re: Add drawing function MouseMotionEventListener program?

"non-static variable this cannot be referenced from a static context"

Can you post the full text of the error message that shows where it happens?

The error happens when code in a static method (like main()) tries to access a variable in a class without creating an instance of the class first. If there is no instance of the class, the variable does not exist yet.

Re: Add drawing function MouseMotionEventListener program?

Yup that solved the error! But now that it runs, the text that i have it drawing doesn't show up?

/*
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle or the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/packageevents;/*
* MouseMotionEventDemo.java
*
*/importjava.awt.*;importjava.awt.event.MouseEvent;importjava.awt.event.MouseMotionListener;importjavax.swing.*;importjavax.swing.event.MouseInputAdapter;importjava.awt.Color;importjava.awt.Graphics;importjava.util.HashSet;importjava.util.Set;importjavax.swing.JPanel;class MyPanel extendsJPanel{public MyPanel(){
setBorder(BorderFactory.createLineBorder(Color.black));}
@Override
publicDimension getPreferredSize(){returnnewDimension(450,450);}
@Override
publicvoid paintComponent(Graphics g){super.paintComponent(g);
g.setColor(Color.black);
g.drawString("Custom Panellll", 100, 200);}}publicclass MouseMotionEventDemo extendsJPanelimplementsMouseMotionListener{
BlankArea blankArea;JTextArea textArea;staticfinalString NEWLINE =System.getProperty("line.separator");publicstaticvoid main(String[] args){/* Use an appropriate Look and Feel */try{//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");//UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");}catch(UnsupportedLookAndFeelException ex){
ex.printStackTrace();}catch(IllegalAccessException ex){
ex.printStackTrace();}catch(InstantiationException ex){
ex.printStackTrace();}catch(ClassNotFoundException ex){
ex.printStackTrace();}/* Turn off metal's use of bold fonts */UIManager.put("swing.boldMetal", Boolean.FALSE);//Schedule a job for the event dispatch thread://creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(newRunnable(){publicvoid run(){
createAndShowGUI();}});}/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/privatestaticvoid createAndShowGUI(){//Create and set up the window.JFrame frame =newJFrame("MouseMotionEventDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Create and set up the content pane.JComponent newContentPane =new MouseMotionEventDemo();
newContentPane.setOpaque(true);//content panes must be opaque
frame.setContentPane(newContentPane);//Display the window.
frame.pack();
frame.setVisible(true);}public MouseMotionEventDemo(){super(newGridLayout(0,1));
blankArea =new BlankArea(Color.YELLOW);
add(blankArea);
textArea =newJTextArea();
textArea.setEditable(false);JScrollPane scrollPane =newJScrollPane(textArea,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setPreferredSize(newDimension(200, 75));
add(scrollPane);//Register for mouse events on blankArea and panel.
blankArea.addMouseMotionListener(this);
addMouseMotionListener(this);
setPreferredSize(newDimension(450, 450));
setBorder(BorderFactory.createEmptyBorder(20,20,20,20));}void eventOutput(String eventDescription, MouseEvent e){
textArea.append(eventDescription
+" ("+ e.getX()+","+ e.getY()+")"+" detected on "+ e.getComponent().getClass().getName()+ NEWLINE);
textArea.setCaretPosition(textArea.getDocument().getLength());}publicvoid mouseMoved(MouseEvent e){
eventOutput("Mouse moved", e);}publicvoid mouseDragged(MouseEvent e){
eventOutput("Mouse dragged", e);}privateclass MyListener extendsMouseInputAdapter{
@Override
publicvoid mousePressed(MouseEvent e){
repaint();}}}

as you can see i moved the MyPanel class above the MouseMotionEventDemo class.

Re: Add drawing function MouseMotionEventListener program?

Look at the attached image in post#19. It shows the text being drawn. That from the code in post#12.
Look at the code in post #12 and see what has been changed.
How many versions of the code do you have? It's best to only have one to keep from getting confused.

I created a simple BlankArea class for testing and commented out the yellow bit.

Re: Add drawing function MouseMotionEventListener program?

Originally Posted by Norm

Look at the attached image in post#19. It shows the text being drawn. That from the code in post#12.
Look at the code in post #12 and see what has been changed.
How many versions of the code do you have? It's best to only have one to keep from getting confused.

I created a simple BlankArea class for testing and commented out the yellow bit.

I got it to work in post 21
But i'd still like the text to be drawn inside the yellow area