Re: It doesn't like 'super' where ever I put it.
bilsch wrote:
Hello, below is my program stripped to bare bones. Java says 'super' must be
first statement in constructor. I've moved it everywhere still no luck. The
program was running yesterday and I can't figure what could be wrong. Any
suggestions?
The error output is listed below the program
TIA Bill S.
PROGRAM:
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class CalcFrame1 extends JFrame{
public void CalcFrame1() {
Everyone else has told you of the difference a 'void' makes.
You asked where this is taught so you can learn it. The Java tutorial is the
canonical starting place.
<http://docs.oracle.com/javase/tutorial/>
particularly
<http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html>
super("CalcFrame1");
//setTitle("CalcFrame1");
FlowLayout flo = new FlowLayout();
setLayout(flo);
setLookAndFeel();
//setSize(600,600);
JButton shf = new JButton("shft");
JButton chs = new JButton("chs");
add (shf);
add (chs);
pack();
setVisible(true);
Don't 'setVisible()' in the constructor. Constructors, as the name implies,
are for construction of an object, but not its operation.
Let the object finish building itself completely before anything else can get
to it.
}
private void setLookAndFeel(){
try{
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
}
catch(Exception exc){
Don't catch just 'Exception' here, but the exact exceptions you are required
to catch.
// ignore error
And *never* ignore errors!
}
}
public static void main(String[] args){
CalcFrame1 ClFr1 = new CalcFrame1();
Oops. You didn't start this on the EDT (Event Dispatch Thread). (And you don't
let the object finish construction before things can get to it.)
The Swing tutorial (ibid.) explains this a little bit.
--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg