2014-01-19 14 views
1

Как исправить ошибку, Void недействителен для переменной main? Я пробовал смотреть это онлайн, но ничего не мог найти. Кроме того, я как бы новичок в этом, поэтому, пожалуйста, успокойтесь. Я учусь, когда иду.Void недействителен для переменной main?

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

import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 


public class Text extends JFrame 
{ 


    JPanel jp = new JPanel(); 
    JLabel jl = new JLabel(); 
    JTextField jt = new JTextField("Month",30); 
    JTextField jt2 = new JTextField("Date",30); 
    JButton jb = new JButton("Enter"); 

    public Text() 
    { 
     public static void main (String[] args); { 
      setTitle("Tutorial"); 
      setVisible(true); 
      setSize(400, 200); 
      setDefaultCloseOperation(EXIT_ON_CLOSE); 

      jp.add(jt); 
      jp.add(jt2); 


      jt.addActionListener(new ActionListener() 
      { 
       public void actionPerformed(ActionEvent e) 
       { 
         String input = jt.getText(); 
         jl.setText(input); 
       } 
      }); 

      jp.add(jb); 
      jb.addActionListener(new ActionListener() 
      { 
        public void actionPerformed(ActionEvent e) 
        { 


         String input = jt.getText(); 
         String input2 = jt2.getText(); 
         jl.setText(input); 
         jl.setText(input2); 
         int day = Integer.parseInt(input2); 
          if ((input.equals("Test")) && (input2.equals(day >= 26)))//||(input2.equals("27"))))) 
           JOptionPane.showMessageDialog(null, "" , "" ,JOptionPane.PLAIN_MESSAGE,aries); 
        } 

      }); 


      add(jp); 

    } 

    } 
} 
+0

возможного дубликат [Что делает недействительным сделать в Java? ] (http://stackoverflow.com/questions/7367381/what-does-void-do-in-java) – MariuszS

ответ

1

Java не позволяет определять методы в других методах. Переместите метод main из конструктора Text и удалите полуколонную колонку, которая заканчивает утверждение раньше.

Кроме того у вас есть ряд методов (например setTitle и setVisible), которые принадлежат к JFrame - они должны быть перемещены в блок экземпляра кода, чтобы сделать их доступны.

public class Text extends JFrame { 

    JPanel jp = new JPanel(); 
    JLabel jl = ... 

    public Text() { 
     setTitle("Tutorial"); 
     setVisible(true); 
     ... 

     add(jp); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new Text().setVisible(true); 
      } 
     }); 
    } 
} 
2

Вы разместили свой main метод внутри конструктор для class Text. Он принадлежит вне конструктора на том же уровне, что и конструктор. Переместите его за пределы конструктора.

public class Text extends JFrame 
{ 


    JPanel jp = new JPanel(); 
    JLabel jl = new JLabel(); 
    JTextField jt = new JTextField("Month",30); 
    JTextField jt2 = new JTextField("Date",30); 
    JButton jb = new JButton("Enter"); 

    public static void main (String[] args); { 
     setTitle("Tutorial"); 
     setVisible(true); 
     setSize(400, 200); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     ... 
    } 

    public Text() 
    { 
     ... 
    } 
    ... 
} 
1

Удалить ; после объявления main метода:

public static void main (String[] args); 
             ^-------- Delete this 

И поставил метод main из конструктора:

public Text() { 
... 
} 

public static void main(...) { 
... 
} 
Смежные вопросы