Reputation: 57
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
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
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
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