user2997369
user2997369

Reputation: 57

Void is invalid for the variable main?

How do i fix the error, Void is invalid for the variable main? I tried looking this up online but couldn't find anything. Also I am kind of new to this so please take it easy on me. I am learning as I go.

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);

   }

   }
}  

Upvotes: 3

Views: 6220

Answers (3)

Reimeus
Reimeus

Reputation: 159754

Java doesnt allow methods to be defined within other methods. Move the main method out of the Text constructor and remove the semi-colon which is terminating the statement early.

In addition you have a number of methods (e.g. setTitle and setVisible) which belong to the JFrame - these need to be moved to an instance code block to make them are accessible.

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);
            }
        });
    }
}

Upvotes: 2

Christian Tapia
Christian Tapia

Reputation: 34146

Delete the ; after the main method declaration:

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

And put the main method out of the constructor:

public Text() {
...
}

public static void main(...) {
...
}

Upvotes: 1

Jim Garrison
Jim Garrison

Reputation: 86764

You have placed your main method inside the constructor for class Text. It belongs outside the constructor, at the same level as the constructor. Move it outside the constructor.

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()
   {
      ...
   }
   ...
}

Upvotes: 2

Related Questions