Hi, I'm writing a paint application for my java class. I've gotten the JFrame to look the way it's supposed to, and everything looks in order, but I can't draw. Something's wrong but I can't tell what it is. Can anyone help?
Code:import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; import java.awt.event.*; import java.util.Hashtable; public class PaintApp extends JFrame implements ActionListener, ChangeListener, MouseMotionListener, MouseListener { JLabel textprompt = new JLabel("Enter text, then click location:"); JTextField textinput = new JTextField("", 25); ImageIcon eraserIcon = new ImageIcon("eraser.jpg"); JButton eraser = new JButton(eraserIcon); ImageIcon pencilIcon = new ImageIcon("pencil.jpg"); JButton pencil = new JButton(pencilIcon); ImageIcon brushIcon = new ImageIcon("brush.jpg"); JButton brush = new JButton(brushIcon); ImageIcon textIcon = new ImageIcon("text.jpg"); JButton text = new JButton (textIcon); JLabel stroke = new JLabel("Stroke:"); JSlider sliderbar = new JSlider(JSlider.VERTICAL, 0,3,3); ImageIcon redIcon = new ImageIcon("red.gif"); JButton redCrayon = new JButton (redIcon); ImageIcon yellowIcon = new ImageIcon("yellow.gif"); JButton yellowCrayon = new JButton (yellowIcon); ImageIcon greenIcon = new ImageIcon("green.gif"); JButton greenCrayon = new JButton (greenIcon); ImageIcon blueIcon = new ImageIcon("blue.gif"); JButton blueCrayon = new JButton (blueIcon); JPanel topPanel = new JPanel(new FlowLayout()); JPanel centerPanel = new JPanel(new FlowLayout()); JPanel sidePanel = new JPanel(new GridLayout(6,1)); JPanel bottomPanel = new JPanel(new GridLayout(2,2)); boolean eraserOn = false; boolean pencilOn = false; boolean brushOn = false; boolean textOn = false; int last_x=-10; int last_y=-10; int xpos=-10; int ypos=-10; Color drawColor = (Color.RED); Font font1 = new Font("Arial", Font.PLAIN, 20); int value; JMenuBar menuBar = new JMenuBar(); JMenu file = new JMenu("File"); JMenuItem newopt = new JMenuItem("New"); JMenuItem exit = new JMenuItem("Exit"); JMenu help = new JMenu("Help"); JMenuItem about = new JMenuItem("About"); JLabel createdby = new JLabel("Created by LV"); float lineWeight; BasicStroke str = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); Container con = null; public PaintApp() { super("My Paint Program"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); con = this.getContentPane(); con.setLayout(new BorderLayout()); setJMenuBar(menuBar); menuBar.add(file); menuBar.add(help); file.add(newopt); file.add(exit); help.add(about); newopt.addActionListener(this); exit.addActionListener(this); about.addActionListener(this); topPanel.add(textprompt); textprompt.setEnabled(false); topPanel.add(textinput); textinput.setEditable(false); centerPanel.setBackground(Color.white); centerPanel.add(createdby); createdby.setVisible(false); sidePanel.add(eraser); eraser.setBorder(new BevelBorder(BevelBorder.RAISED)); eraser.addActionListener(this); sidePanel.add(pencil); pencil.setBorder(new BevelBorder(BevelBorder.LOWERED)); pencil.addActionListener(this); sidePanel.add(brush); brush.setBorder(new BevelBorder(BevelBorder.RAISED)); brush.addActionListener(this); sidePanel.add(text); sidePanel.setBackground(Color.WHITE); text.setBorder(new BevelBorder(BevelBorder.RAISED)); text.addActionListener(this); sidePanel.add(stroke); sidePanel.add(sliderbar); sliderbar.setMinorTickSpacing(1); sliderbar.setMajorTickSpacing(1); sliderbar.setPaintTicks(true); sliderbar.setPaintLabels(true); sliderbar.setSnapToTicks(true); Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>(); labelTable.put(new Integer( 0 ), new JLabel("Thin") ); labelTable.put(new Integer(3), new JLabel("Thick") ); sliderbar.setLabelTable( labelTable ); sliderbar.addChangeListener(this); bottomPanel.add(redCrayon); redCrayon.setBorder(new BevelBorder(BevelBorder.LOWERED)); redCrayon.addActionListener(this); bottomPanel.add(yellowCrayon); yellowCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); yellowCrayon.addActionListener(this); bottomPanel.add(greenCrayon); greenCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); greenCrayon.addActionListener(this); bottomPanel.add(blueCrayon); blueCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); blueCrayon.addActionListener(this); con.add(topPanel, BorderLayout.NORTH); con.add(centerPanel, BorderLayout.CENTER); con.add(sidePanel, BorderLayout.WEST); con.add(bottomPanel, BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == exit) { System.exit(0); } if (source == newopt) {centerPanel.repaint(); } if (source == about) {createdby.setVisible(true); } if (source == eraser) { eraser.setBorder(new BevelBorder(BevelBorder.LOWERED)); pencil.setBorder(new BevelBorder(BevelBorder.RAISED)); brush.setBorder(new BevelBorder(BevelBorder.RAISED)); text.setBorder(new BevelBorder(BevelBorder.RAISED)); drawColor = (Color.white); eraserOn = true; } if (source == pencil) { eraser.setBorder(new BevelBorder(BevelBorder.RAISED)); pencil.setBorder(new BevelBorder(BevelBorder.LOWERED)); brush.setBorder(new BevelBorder(BevelBorder.RAISED)); text.setBorder(new BevelBorder(BevelBorder.RAISED)); drawColor = (Color.red); pencilOn = true; } if (source == brush) { eraser.setBorder(new BevelBorder(BevelBorder.RAISED)); pencil.setBorder(new BevelBorder(BevelBorder.RAISED)); brush.setBorder(new BevelBorder(BevelBorder.LOWERED)); text.setBorder(new BevelBorder(BevelBorder.RAISED)); drawColor = (Color.red); brushOn = true; } if (source == text) { eraser.setBorder(new BevelBorder(BevelBorder.RAISED)); pencil.setBorder(new BevelBorder(BevelBorder.RAISED)); brush.setBorder(new BevelBorder(BevelBorder.RAISED)); text.setBorder(new BevelBorder(BevelBorder.LOWERED)); drawColor = (Color.red); textprompt.setEnabled(true); textinput.setEditable(true); textOn = true; } if (source == redCrayon) { redCrayon.setBorder(new BevelBorder(BevelBorder.LOWERED)); yellowCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); greenCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); blueCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); drawColor = (Color.red); } if (source == yellowCrayon) { redCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); yellowCrayon.setBorder(new BevelBorder(BevelBorder.LOWERED)); greenCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); blueCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); drawColor = (Color.yellow); } if (source == greenCrayon) { redCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); yellowCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); greenCrayon.setBorder(new BevelBorder(BevelBorder.LOWERED)); blueCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); drawColor = (Color.green); } if (source == blueCrayon) { redCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); yellowCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); greenCrayon.setBorder(new BevelBorder(BevelBorder.RAISED)); blueCrayon.setBorder(new BevelBorder(BevelBorder.LOWERED)); drawColor = (Color.blue); } } public void mousePressed(MouseEvent e) { last_x = e.getX(); last_y = e.getY(); Graphics gr = getGraphics(); if(textOn == true) { String s = textinput.getText(); gr.setColor(drawColor); gr.setFont(font1); gr.drawString(s, last_x, last_y); } } public void mouseDragged(MouseEvent e) { xpos=e.getX(); ypos=e.getY(); Graphics gr = getGraphics(); gr.setColor(drawColor); gr.drawLine(last_x,last_y,xpos,ypos); Graphics2D gr2d = (Graphics2D)gr; BasicStroke drawLine = new BasicStroke(lineWeight, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); gr2d.setStroke(drawLine); if (eraserOn == true) { gr2d.drawLine(last_x, last_y, xpos, ypos); } if (brushOn == true) { gr2d.drawLine(last_x, last_y, xpos, ypos); } gr2d.setStroke(str); last_x = xpos; last_y = ypos; topPanel.repaint(); menuBar.repaint(); eraser.repaint(); pencil.repaint(); brush.repaint(); text.repaint(); stroke.repaint(); sliderbar.repaint(); redCrayon.repaint(); yellowCrayon.repaint(); greenCrayon.repaint(); blueCrayon.repaint(); } public void mouseMoved(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e){} public void stateChanged(ChangeEvent e) { JSlider source = (JSlider)e.getSource(); value = source.getValue(); if (value==1) { lineWeight = 5; } if (value==2) { lineWeight = 10; } if (value==3) { lineWeight = 20; } } public static void main(String[] args) { PaintApp aFrame = new PaintApp(); Image img = Toolkit.getDefaultToolkit().getImage("IconImage.gif"); aFrame.setIconImage(img); aFrame.setSize(750,550); aFrame.setResizable(false); aFrame.setVisible(true); aFrame.setLocationRelativeTo(null); } }


Reply With Quote

Bookmarks