Welcome to the Java Programming Forums


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.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Page 2 of 4 FirstFirst 1234 LastLast
Results 26 to 50 of 86

Thread: drawLine problem, lines not connected

  1. #26
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    Yeah I did that, and that's perfectly ok, for now this is just a bare bones version of something

  2. #27
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    But how do i make it so the mouse tracking text doesn't pop up to the drawing area and glitch out?

  3. #28
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    Its frail and subject to java recreating a clean graphics context which will lose the old lines.
    If you don't understand my answer, don't ignore it, ask a question.

  4. #29
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    make it so the mouse tracking text doesn't pop up to the drawing area and glitch out?
    I don't see that happen. Can you take a screen shot and attach it?

    Call the super method and draw the whole screen from the arraylist.
    If you don't understand my answer, don't ignore it, ask a question.

  5. #30
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    I'm not using an arrayList at the moment mainly because I'm really not sure how to implement it, but here's the code and a screenshot of what's happening!

    package events;
     
    /*
     * MouseMotionEventDemo.java
     *
     */
     
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import javax.swing.*;
    import java.awt.Color;
    import java.awt.Graphics;
    import javax.swing.JPanel;
    import java.util.*;
     
     
    public class MouseMotionEventDemo extends JPanel
            implements MouseMotionListener {
        BlankArea blankArea;
        JTextArea textArea;
        int lastX=0, lastY=0, currX=0, currY=0;
        ArrayList al = new ArrayList();
        Object ia[] = al.toArray();
        static final String NEWLINE = System.getProperty("line.separator");
     
        public static void 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(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
     
        /**
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
         */
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("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(new GridLayout(0,1));
            blankArea = new BlankArea(Color.BLUE);
            add(blankArea);
     
            textArea = new JTextArea();
            textArea.setEditable(false);
            JScrollPane scrollPane = new JScrollPane(textArea,
                    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            scrollPane.setPreferredSize(new Dimension(200, 75));
     
            add(scrollPane);
     
            //Register for mouse events on blankArea and panel.
            blankArea.addMouseMotionListener(this);
            addMouseMotionListener(this);
     
     
            setPreferredSize(new Dimension(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());
        }
     
       public void mouseMoved(MouseEvent e) {
           eventOutput("Mouse moved", e);
           record(e.getX(),e.getY());
     
       }
     
        @Override
       public boolean mouseDown(Event e, int x, int y){
           return(record(x,y));
       }
     
        @Override
       public boolean mouseEnter(Event e, int x, int y) {
            return(record(x, y));
        }
     
       public void mouseDragged(MouseEvent e) {
            eventOutput("Mouse dragged", e);
            currX = e.getX();
            currY = e.getY();
            repaint();
        }
     
        @Override
       public void paintComponent(Graphics g) {
            //super.paintComponent(g);
            g.drawLine(currX, currY, lastX, lastY);
            record(currX,currY);
       }
     
       protected boolean record(int x, int y){
            lastX = x;
            lastY = y;
            return(true);
        }
    }

    Untitled2.jpg

    This is with the super.paintComponent call commented out. If i leave it in it just draws between the current and last point and doesn't save, but if i comment it out, it saves and this happens

  6. #31
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    I'm not using an arrayList at the moment mainly because I'm really not sure how to implement it,
    Time for some reading. The java tutorial, the API doc and what Search finds here or with Google.
    If you don't understand my answer, don't ignore it, ask a question.

  7. #32
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    Im a bit confused though, why does it work just how I want without super.paintComponent called? besides the whole screen glitching out

  8. #33
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    Strange that the top component has the text area with scroll bars.
    Here's what I get:
    Attached Images Attached Images
    If you don't understand my answer, don't ignore it, ask a question.

  9. #34
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    Quote Originally Posted by Norm View Post
    Strange that the top component has the text area with scroll bars.
    Here's what I get:
    What the heck? What is different about your code compared to mine? maybe your BlankArea is different?

  10. #35
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    thats literally exactly what I want to happen lol

  11. #36
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    I don't know what java does with the graphics between calls to paintComponent().
    I've always cleared it to get rid of any left over garbage and to be sure I had control over what was being drawn on the screen.
    If you don't understand my answer, don't ignore it, ask a question.

  12. #37
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    How and where did you clear it?

  13. #38
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    If you want testers to use the same code as you are using, you need to post it.
    If you don't understand my answer, don't ignore it, ask a question.

  14. #39
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    How and where did you clear it?
    Call super.paintComponent(g)
    If you don't understand my answer, don't ignore it, ask a question.

  15. #40
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    I did post my code in post #30?

    Ah, but then when I call super.painComponent(g) the whole thing doesn't save as i said before, hm.

  16. #41
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    I did post my code in post #30?

    maybe your BlankArea is different?
    Post #30 doesn't have a definition for BlankArea. All the testing classes should be together.
    If you don't understand my answer, don't ignore it, ask a question.

  17. #42
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    Here are the two files I'm using as of right now

    MouseMotionEventDemo.java
    package events;
     
    /*
     * MouseMotionEventDemo.java
     *
     */
     
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import javax.swing.*;
    import java.awt.Color;
    import java.awt.Graphics;
    import javax.swing.JPanel;
    import java.util.*;
     
     
    public class MouseMotionEventDemo extends JPanel
            implements MouseMotionListener {
        BlankArea blankArea;
        JTextArea textArea;
        int lastX=0, lastY=0, currX=0, currY=0;
        ArrayList al = new ArrayList(50000);
        Object ia[] = al.toArray();
        static final String NEWLINE = System.getProperty("line.separator");
     
        public static void 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(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
     
        /**
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
         */
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("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(new GridLayout(0,1));
            blankArea = new BlankArea(Color.BLUE);
            add(blankArea);
     
            textArea = new JTextArea();
            textArea.setEditable(false);
            JScrollPane scrollPane = new JScrollPane(textArea,
                    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            scrollPane.setPreferredSize(new Dimension(200, 75));
     
            add(scrollPane);
     
            //Register for mouse events on blankArea and panel.
            blankArea.addMouseMotionListener(this);
            addMouseMotionListener(this);
     
     
            setPreferredSize(new Dimension(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());
        }
     
       public void mouseMoved(MouseEvent e) {
           eventOutput("Mouse moved", e);
           record(e.getX(),e.getY());
     
       }
     
        @Override
       public boolean mouseDown(Event e, int x, int y){
           return(record(x,y));
       }
     
        @Override
       public boolean mouseEnter(Event e, int x, int y) {
            return(record(x, y));
        }
     
       public void mouseDragged(MouseEvent e) {
            eventOutput("Mouse dragged", e);
            currX = e.getX();
            currY = e.getY();
            repaint();
        }
     
        @Override
       public void paintComponent(Graphics g) {
            //super.paintComponent(g);
            g.drawLine(currX, currY, lastX, lastY);
            record(currX,currY);
       }
     
       protected boolean record(int x, int y){
            lastX = x;
            lastY = y;
            return(true);
        }
    }

    and BlankArea.java
     
    /*
     * 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.
     */ 
     
    package events;
     
    /*
     * BlankArea.java is used by:
     *    MouseEventDemo.java.
     *    MouseMotionEventDemo.java
     */
     
    import java.awt.Color;
    import java.awt.Dimension;
    import javax.swing.*;
     
     
     
    public class BlankArea extends JLabel {
        Dimension minSize = new Dimension(100, 50);
     
        public BlankArea(Color color) {
            setBackground(color);
            setOpaque(false);
            setBorder(BorderFactory.createLineBorder(Color.black));  
     
        }
     
      }

  18. #43
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    I don't get the textArea display at the top.
    If you don't understand my answer, don't ignore it, ask a question.

  19. #44
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    Well what's different about your code and mine?

  20. #45
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    I make BlankArea an inner class.
    If you don't understand my answer, don't ignore it, ask a question.

  21. #46
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    How did you do that?

  22. #47
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    nvm I figured it out, but it still gives me that weird textArea thing

  23. #48
    Forum Squatter newbie's Avatar
    Join Date
    Nov 2010
    Location
    North Wales
    Posts
    661
    My Mood
    Stressed
    Thanks
    28
    Thanked 115 Times in 106 Posts
    Blog Entries
    1

    Default Re: drawLine problem, lines not connected

    Can't your textarea up top not be explained Norm by the fact that super.paintComponent() is commented out?

    Move your GUI below the toolbar and see if it inherits that look, or the textarea distorts.
    Please use [highlight=Java]//code goes here...[/highlight] tags when posting your code

  24. #49
    Member
    Join Date
    Sep 2012
    Posts
    65
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: drawLine problem, lines not connected

    Quote Originally Posted by newbie View Post
    Can't your textarea up top not be explained Norm by the fact that super.paintComponent() is commented out?

    Move your GUI below the toolbar and see if it inherits that look, or the textarea distorts.
    I'm not really sure what you meant by move the GUI, could you point out where in the code that would be done?

  25. #50
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,094
    Thanks
    48
    Thanked 2,152 Times in 2,125 Posts

    Default Re: drawLine problem, lines not connected

    I haven't experimented with leaving out the call to super.paintComponent(). The current program doesn't misbehave on my 1.6 or 1.7 systems.

    Java could be doing weird things on the graphics.

    The OP is fighting a bug/feature that doesn't need to be fought.
    If you don't understand my answer, don't ignore it, ask a question.

Page 2 of 4 FirstFirst 1234 LastLast

Similar Threads

  1. help with keeping client connected to server
    By frozen java in forum What's Wrong With My Code?
    Replies: 0
    Last Post: November 19th, 2011, 01:29 PM
  2. Problem with printing out collinear lines!
    By rkrajnov in forum What's Wrong With My Code?
    Replies: 0
    Last Post: February 25th, 2011, 05:32 PM
  3. Problem with Output # of lines
    By coyboss in forum What's Wrong With My Code?
    Replies: 1
    Last Post: February 7th, 2011, 09:21 PM
  4. Why rs...still connected
    By javamula in forum What's Wrong With My Code?
    Replies: 3
    Last Post: January 30th, 2011, 03:53 PM
  5. g.drawLine doesn't draw line in for loop
    By shumpi in forum What's Wrong With My Code?
    Replies: 1
    Last Post: October 12th, 2010, 06:15 PM