Почему я получаю {ошибку? - PullRequest
       4

Почему я получаю {ошибку?

0 голосов
/ 06 февраля 2012

Я получаю Java: 105: ошибка: недопустимый символ: \ 29}

Я пишу программу, в которой пользователь может нажать кнопку вправо / влево / вверх / вниз и переместить «шар» наэкран.

Я не могу понять, что я делаю неправильно.Может кто-нибудь, пожалуйста, помогите мне с этим?

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

public class Lab2a extends JFrame {

Lab2a(){
    setTitle("Lab 1b - Application #2");
    Lab2Panel p = new Lab2Panel();
    add(p);
}

public static void main(String[] args){

    Lab2 frame = new Lab2();
    frame.setTitle("Lab2 Application # 1");
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(600, 400);
    frame.setVisible(true);
    }

}

class Lab2Panel extends JPanel{
Lab2Button canvas = new Lab2Button();
JPanel panel = new JPanel();

Lab2Panel () {

    setLayout(new BorderLayout());

    JButton leftButton = new JButton("left");
    JButton rightButton = new JButton("right");
    JButton upButton = new JButton("up");
    JButton downButton = new JButton("down");

    panel.add(leftButton);
    panel.add(rightButton);
    panel.add(upButton);
    panel.add(downButton);

    this.add(canvas, BorderLayout.CENTER);
    this.add(panel, BorderLayout.SOUTH);

    leftButton.addActionListener(new LeftListener(canvas));
    rightButton.addActionListener(new RightListener(canvas));
    upButton.addActionListener(new UpListener(canvas));
    downButton.addActionListener(new DownListener(canvas));
}


}

class Lab2Button extends JPanel {
int radius = 5;
int x = -1;
int y = -1;

protected void paintComponent(Graphics g){
    if (x<0 || y<0) {
        x = getWidth() / 2 - radius;
        y = getHeight() / 2 - radius;
    }
    super.paintComponent(g);
    g.drawOval(x,y, 2 * radius, 2 * radius);

}

        public void moveLeft(){

            x -= 5;
            this.repaint();
        }

        public void moveRight(){

            x += 5;
            this.repaint();
        }

        public void moveUp(){
            y += 5;
            this.repaint();
        }

        public void moveDown(){
            y -= 5;
            this.repaint();
        }


}

class LeftListener implements ActionListener{
    private Lab2Button canvas;

    LeftListener(Lab2Button canvas) {
     this.canvas = canvas;
    }

    public void actionPerformed(ActionEvent e){
     canvas.moveLeft();
    }
}

Извините, что 105 - строка выше этой.

class RightListener implements ActionListener{
    private Lab2Button canvas;

    RightListener(Lab2Button canvas) {
        this.canvas = canvas;
    }

    public void actionPerformed(ActionEvent e){
      canvas.moveRight();
    }
}


class UpListener implements ActionListener{
    private Lab2Button canvas;

    UpListener(Lab2Button canvas) {
        this.canvas = canvas;
    }

    public void actionPerformed(ActionEvent e){
        canvas.moveUp();
    }
}



class DownListener implements ActionListener{
    private Lab2Button canvas;

    DownListener(Lab2Button canvas) {
        this.canvas = canvas;
    }

    public void actionPerformed(ActionEvent e){
     canvas.moveDown();
    }
}

Ответы [ 4 ]

2 голосов
/ 06 февраля 2012

Я попытался использовать ваш код и просто изменил (строка 20):

Lab2 frame = new Lab2();

на

Lab2a frame = new Lab2a();

Работает ли это без ошибок на моей машине .. Минус тот факт, что дои вниз поменялись местами: P

Редактировать: NetBeans также автоматически разрешил ваш импорт следующим образом:

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

Из того, что у вас было, это могло сыграть роль в том, чтобы заставить меня работать.

2 голосов
/ 06 февраля 2012

Итак, похоже, что есть несколько проблем, но не совсем так, как вы описали.

  1. Строка 15 Lab2 frame = new Lab2(); предположительно должна быть Lab2a frame = new Lab2a();, или вы пропустиливключая ваше объявление объекта Lab2.

  2. Как только проблема 1 была решена, код компилируется нормально.Это означает, что ошибка находится в одном из 2 мест.

    1. Объявление Lab2, которое вы, возможно, исключили.

    2. Байтываш исходный файл, и в этом случае лучшей идеей будет либо удалить и повторно вставить ваш код из другого источника (например, StackOverflow), либо, что еще лучше, перепечатать код.Вы можете улучшить форматирование по пути:)

1 голос
/ 06 февраля 2012

не могу понять, где ошибка ..

public static void main(String[] args){

    Lab2 frame = new Lab2();
}

Вы имеете в виду Lab2a в этом коде?

1 голос
/ 06 февраля 2012

Без номеров строк трудно угадать, но похоже, что здесь у вас есть две закрывающие скобки, которые вы не должны:

public static void main(String[] args){

    Lab2 frame = new Lab2();
    frame.setTitle("Lab2 Application # 1");
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(600, 400);
    frame.setVisible(true);
    }  <--- EXTRA

}

Обновление: если ваше намерение было одним классом, а остальные были внутреннимиклассы, тогда фигурная скобка, отмеченная выше, должна быть перемещена в конец файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...