2013-09-16 2 views
0

Я новичок в Java. Я хочу отобразить Jframe с двумя кнопками в нем. После нажатия каждой кнопки должно отображаться другое сообщение JOptionPane. Однако я получаю сообщение об ошибке Illegal start of expression как в объявлениях static class.Незаконное начало выражения для статических классов?

может кто-нибудь объяснить почему? Я пробовал перемещать статические классы, но по-прежнему ту же ошибку.

Вот мой код ...

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

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 

public class main { 

    public main() { 
    } 


    public static void main(String[] args) { 

        String name = JOptionPane.showInputDialog(null, "What's your name?", "Enter your name", JOptionPane.PLAIN_MESSAGE); 
        System.out.println("\nWelcome, "+ name + "."); 
        System.out.print(terms); 
        JOptionPane.showMessageDialog(null, "Welcome to SkyWhale, " + name + ".\n" + deets + "\n" + terms , "Welcome, " + name + ".", JOptionPane.PLAIN_MESSAGE); 

        JFrame control = new JFrame("SkyWhale"); 
         control.setVisible(true); 
         control.setSize(500,200); 
         control.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

         JPanel panel = new JPanel(); 
         JButton chatbtn = new JButton("Live Chat"); 
         JButton editorbtn = new JButton("Editor"); 
         control.add(panel); 
         panel.add(chatbtn); 
         panel.add(editorbtn); 

         chatbtn.addActionListener(goToChat()); 
         editorbtn.addActionListener(goToEdit()); 

        static class goToEdit implements ActionListener { 
         public void actionPerformed(ActionEvent e) 
         { 
          JOptionPane.showMessageDialog(null, "Code goes here...", "Editor", JOptionPane.PLAIN_MESSAGE); 
         } 
         } 
        static class goToChat implements ActionListener { 
         public void actionPerformed (ActionEvent e) 
         { 
          JOptionPane.showMessageDialog(null, "Conversation...", "Live Chat", JOptionPane.PLAIN_MESSAGE); 
         } 
         } 

        } 

       } 



     } 
+1

У вас есть статические классы, объявленные в теле метода. Это не разрешено. –

+0

Итак, если я закрою метод и добавлю его после, это сработает? –

+0

Это законно. Что касается того, будет ли это работать, это зависит от того, что вы делаете. –

ответ

2

Объявление static классов в методе является незаконным в Java. Вы можете объявлять локальные классы без ключевого слова static.

public static void main(String[] args) { 

    class Foo { 
     public void bar() { 
      System.out.println("inside Foo#bar()"); 
     } 
    } 

    Foo foo = new Foo(); 
    foo.bar(); 
} 

Или вы можете полностью исключить их из метода. Либо объявляйте их в своей собственной компиляционной единице, т.е. a java, или как inner classes, или как staticnested classes.

Похожие:

Смежные вопросы