Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Ошибка в коде программы


Автор: gws12011990 20.9.2010, 19:43
Какая-то ошибка может кто- нибудь посмотрит?
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - variable saveAs might not have been initialized
        at javaapplication2.MenuScribble.<init>(MenuScribble.java:7)
        at javaapplication2.MenuScribble.main(MenuScribble.java:73)


Код

package javaapplication2;
import java.awt.*;
import java.awt.event.*;
public class MenuScribble extends Frame {
    private final Object saveAs;
    public MenuScribble (String s) {
    super(s);
    ScrollPane pane = new ScrollPane();
    pane.setSize(300, 300);
    add(pane, BorderLayout.CENTER);
    Scribble scr = new Scribble(this, 500, 500);
    pane.add(scr);
    MenuBar mb = new MenuBar();
    setMenuBar(mb);
    Menu f = new Menu("Fail");
    Menu v = new Menu("Wid");
    mb.add(v); mb.add(f);
    MenuItem open = new MenuItem("Open...", new MenuShortcut(KeyEvent.VK_0));
    MenuItem save = new MenuItem("Save", new MenuShortcut(KeyEvent.VK_S));
    MenuItem exit = new MenuItem("Exit", new MenuShortcut(KeyEvent.VK_Q));
    f.add(open); f.add(save); f.add(exit);
    f.addSeparator();
    open.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
        {
    FileDialog fd = new FileDialog(new Frame(), "Download", FileDialog.LOAD);
    fd.setVisible(true);
    } } );
    save.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e){
    FileDialog fd = new FileDialog(new Frame(),"Save", FileDialog.SAVE);
    fd.setVisible(true);
    }

    });

    exit.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e){
    System.exit(0);
    }
    } );
      Menu c = Menu ("Color");
      MenuItem clear = new MenuItem("Clear", new MenuShortcut(KeyEvent.VK_D));
    v.add(c); v.add(clear);
    MenuItem red = new MenuItem("red");
    MenuItem green = new MenuItem("green");
    MenuItem blue = new MenuItem("blue");
    MenuItem black = new MenuItem("black");
    c.add(red);c.add(green);c.add(blue); c.add(black);
    red.addActionListener(scr);
    green.addActionListener(scr);
    blue.addActionListener(scr);
    black.addActionListener(scr);
    clear.addActionListener(scr);
    addWindowListener(new WinClose());
    pack();
    setVisible(true);
    }
class WinClose extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);

}

}


    public static void main(String[] args) {
new MenuScribble("Paint");
    }

}
class Scribble extends Component implements
        ActionListener, MouseListener,MouseMotionListener{
protected int lastX, lastY, w, h;
protected Color currColor = Color.black;
protected Frame f;
public Scribble (Frame frame, int width,int height){
f=frame; w=width; h= height;
enableEvent (AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
addMouseListener(this);
addMouseMotionListener(this);
}

public Dimension getPreferredSize()
    {
   return new Dimension(w, h);
}
public void actionPerformed(ActionEvent event)
    {
    String s = event.getActionCommand();
    if (s.equals("Clear")) repaint();
    else if (s.equals("red")) currColor = Color.red;
    else if (s.equals("green")) currColor = Color.green;
    else if (s.equals("blue")) currColor = Color.blue;
    else if (s.equals("black")) currColor = Color.black;
    }
    public void mousePressed(MouseEvent e)
        {
if ((e.getModifiers()& MouseEvent.BUTTON1_MASK) == 0) return;
lastX = e.getX(); lastY = e.getY();
    }
public void mouseDragged (MouseEvent e){
  if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) == 0) return;
  Graphics g = getGraphics();
  g.setColor(currColor);
  g.drawLine(lastX, lastY, e.getX(), e.getY());
    lastX = e.getX(); lastY = e.getY();
}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e ) {}
public void mouseExited(MouseEvent e ) {}
public void mouseMoved (MouseEvent e) {}

}

Автор: mstalker26 20.9.2010, 19:58
ругается он на переменную
Код

private final Object saveAs


кстати, зачем тебе она, если ты нигде ее не используешь?

Автор: gws12011990 20.9.2010, 20:22
Спасибо разобрался подскажите как сделать так, чтобы рисунок нарисованный не стирался после того как производишь какие- либо действия над окном программы (сворачиваешь или переносишь с места на место)!

Автор: mstalker26 20.9.2010, 21:45
Первое что пришло в голову: сохранить рисунок в BufferedImage, а потом нарисовать его после сворачивания и перемещения окна.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)