2012-11-13 22 views
6

मैं यह पता लगाने की कोशिश कर रहा हूं कि यहां मेरे कोड में क्या गलत है। विचार एक छोटा पेंट प्रोग्राम बनाना और लाल, हरा, नीला, और स्पष्ट बटन बनाना है। मेरे पास यह सब कुछ है जिसे मैं काम करने के लिए सोच सकता हूं, लेकिन यह पता नहीं लगा सकता कि कोड में क्या गलत है। कार्यक्रम खुलता है, और तुरंत बंद हो जाता है।जीयूआई जावा प्रोग्राम - पेंट प्रोग्राम

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Paint{ 

    public static void main(String[] args){ 
      gui g = new gui(); 
      g.setVisible(true); 

    } 

} 

public class gui extends JComponent implements ActionListener{ 
    JButton red, green, blue, clear; 
    Image image; 
    Graphics2D draw; 
    int x, y, prevX, prevY; 

    gui(){ 
      JFrame frame = new JFrame("Paint"); 
      Container content = frame.getContentPane(); 
      content.setLayout(new BorderLayout()); 
      setDoubleBuffered(false); 

      JPanel panel = new JPanel(); 
      content.add(panel, BorderLayout.SOUTH); 
      panel.setPreferredSize(new Dimension(32, 68)); 
      panel.setMinimumSize(new Dimension(32, 68)); 
      panel.setMaximumSize(new Dimension(32, 68)); 


      red = new JButton("Red"); 
      green = new JButton("Green"); 
      blue = new JButton("Blue"); 
      clear = new JButton("Clear"); 

      red.setPreferredSize(new Dimension(50, 16)); 
      green.setPreferredSize(new Dimension(50,16)); 
      blue.setPreferredSize(new Dimension(50, 16)); 

      panel.add(red); 
      panel.add(green); 
      panel.add(blue); 
      panel.add(clear); 

      red.addActionListener(this); 
      green.addActionListener(this); 
      blue.addActionListener(this); 
      clear.addActionListener(this); 

      frame.setSize(500, 500); 


      addMouseListener(new MouseAdapter(){ 
        public void mousePressed(MouseEvent e){ 
          prevX = e.getX(); 
          prevY = e.getY(); 
        } 

      }); 

      addMouseMotionListener(new MouseMotionAdapter(){ 
        public void mouseDragged(MouseEvent e){ 
          x = e.getX(); 
          y = e.getY(); 
          draw.drawLine(prevX, prevY, x, y); 
          repaint(); 
          prevX = x; 
          prevY = y; 

        } 


      }); 

    } 


    public void paintComponent(Graphics g){ 

      if(image==null){ 
        image = createImage(getSize().width, getSize().height); 

        draw = (Graphics2D)image.getGraphics(); 

        draw.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

        draw.setPaint(Color.white); 
        draw.fillRect(0, 0, getSize().width, getSize().height); 
        draw.setPaint(Color.black); 
        repaint(); 
      } 

      g.drawImage(image, 0, 0, null); 

    } 


    public void actionPerformed(ActionEvent e) { 
     if(e.getSource()==red){ 
      draw.setPaint(Color.red); 
      repaint(); 
     } 
     if(e.getSource()==green){ 
      draw.setPaint(Color.green); 
      repaint(); 
     } 
     if(e.getSource()==blue){ 
      draw.setPaint(Color.blue); 
      repaint(); 
     } 
     if(e.getSource()==clear){ 
      draw.setPaint(Color.white); 
      draw.fillRect(0, 0, getSize().width, getSize().height); 
      draw.setPaint(Color.black); 
      repaint(); 
     } 


    } 


} 

उत्तर

9

अपने रूप में आप अपने वर्ग JComponent विस्तार किया है की तरह

frame.setVisible(true); 

लाइन g.setVisible(true); आप के लिए काम नहीं कर रहा और साथ ही फ्रेम और पैनल के साथ दृश्यता गुणों का उपयोग करने के लिए है और अपने फ्रेम का उपयोग कर रहे हैं और नहीं की स्थापना इसकी संपत्ति इसे दिखने के लिए सेट करें।

एक ही समस्या अपने पैनल के साथ occure जाएगा तो अपने साथ ही अपने गुण सेट करने के लिए मैं-ए

panel.setVisible(true); 

यहाँ है अपना पूरा कोड है कि इन गुणों

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Container; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.RenderingHints; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseMotionAdapter; 

import javax.swing.JButton; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Paint{ 

    public static void main(String[] args){ 
      gui g = new gui(); 
      g.setVisible(true); 

    } 

} 

class gui extends JComponent implements ActionListener{ 
    JButton red, green, blue, clear; 
    Image image; 
    Graphics2D draw; 
    int x, y, prevX, prevY; 

    gui(){ 
      JFrame frame = new JFrame("Paint"); 
      Container content = frame.getContentPane(); 
      content.setLayout(new BorderLayout()); 
      setDoubleBuffered(false); 

      JPanel panel = new JPanel(); 
      content.add(panel, BorderLayout.SOUTH); 
      panel.setPreferredSize(new Dimension(32, 68)); 
      panel.setMinimumSize(new Dimension(32, 68)); 
      panel.setMaximumSize(new Dimension(32, 68)); 


      red = new JButton("Red"); 
      green = new JButton("Green"); 
      blue = new JButton("Blue"); 
      clear = new JButton("Clear"); 

      red.setPreferredSize(new Dimension(50, 16)); 
      green.setPreferredSize(new Dimension(50,16)); 
      blue.setPreferredSize(new Dimension(50, 16)); 

      panel.add(red); 
      panel.add(green); 
      panel.add(blue); 
      panel.add(clear); 

      panel.setVisible(true); 

      red.addActionListener(this); 
      green.addActionListener(this); 
      blue.addActionListener(this); 
      clear.addActionListener(this); 

      frame.setSize(500, 500); 

      frame.setVisible(true)   ; 


      addMouseListener(new MouseAdapter(){ 
        public void mousePressed(MouseEvent e){ 
          prevX = e.getX(); 
          prevY = e.getY(); 
        } 

      }); 

      addMouseMotionListener(new MouseMotionAdapter(){ 
        public void mouseDragged(MouseEvent e){ 
          x = e.getX(); 
          y = e.getY(); 
          draw.drawLine(prevX, prevY, x, y); 
          repaint(); 
          prevX = x; 
          prevY = y; 

        } 


      }); 

    } 


    public void paintComponent(Graphics g){ 

      if(image==null){ 
        image = createImage(getSize().width, getSize().height); 

        draw = (Graphics2D)image.getGraphics(); 

        draw.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

        draw.setPaint(Color.white); 
        draw.fillRect(0, 0, getSize().width, getSize().height); 
        draw.setPaint(Color.black); 
        repaint(); 
      } 

      g.drawImage(image, 0, 0, null); 

    } 


    public void actionPerformed(ActionEvent e) { 
     if(e.getSource()==red){ 
      draw.setPaint(Color.red); 
      repaint(); 
     } 
     if(e.getSource()==green){ 
      draw.setPaint(Color.green); 
      repaint(); 
     } 
     if(e.getSource()==blue){ 
      draw.setPaint(Color.blue); 
      repaint(); 
     } 
     if(e.getSource()==clear){ 
      draw.setPaint(Color.white); 
      draw.fillRect(0, 0, getSize().width, getSize().height); 
      draw.setPaint(Color.black); 
      repaint(); 
     } 


    } 


} 
जोड़ने के बाद काम कर रहा है
संबंधित मुद्दे