deeznutz
asked on
Why wont this compile in Visual J++ 1.1 ??
I am trying to compile this program from straight out of a book..
import java.awt.*;
import java.awt.event.*;
public class HelloWindowsApp extends Frame {
public static void main(String args[]){
HelloWindowsApp app = new HelloWindowsApp();
}
public HelloWindowsApp() {
super("Toby Rules the World!");
setSize(200,200);
addWindowListener(new HelloWindowsApp.WindowEven tHandler() );
show();
}
public void paint(Graphics g) {
g.drawString("Hello Windows!",50,90);
}
class WindowEventHandler extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
}
Very simple nothing to it really but when I try to compile in the trial version of Visuall J++ 1.1 I get the errors:
--------------------Config uration: HelloWindowsApp - Java Virtual Machine Debug--------------------
Compiling...
Microsoft (R) Visual J++ Compiler Version 1.01.7022
Copyright (C) Microsoft Corp 1996. All rights reserved.
D:\My Programs\My Own tests\HelloWindowsApp.java (20,2) : error J0021: Expected type specifier
D:\My Programs\My Own tests\HelloWindowsApp.java (20,2) : error J0019: Expected identifier
D:\My Programs\My Own tests\HelloWindowsApp.java (23,3) : fatal error J0020: Expected 'class' or 'interface'
Error executing jvc.exe.
HelloWindowsApp.class - 3 error(s), 0 warning(s)
the strange thing is this program will compile fine using the dos compiler: javac.
i.e javac HelloWindowsApp.java
no errors, so whats the problem???
import java.awt.*;
import java.awt.event.*;
public class HelloWindowsApp extends Frame {
public static void main(String args[]){
HelloWindowsApp app = new HelloWindowsApp();
}
public HelloWindowsApp() {
super("Toby Rules the World!");
setSize(200,200);
addWindowListener(new HelloWindowsApp.WindowEven
show();
}
public void paint(Graphics g) {
g.drawString("Hello Windows!",50,90);
}
class WindowEventHandler extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
}
Very simple nothing to it really but when I try to compile in the trial version of Visuall J++ 1.1 I get the errors:
--------------------Config
Compiling...
Microsoft (R) Visual J++ Compiler Version 1.01.7022
Copyright (C) Microsoft Corp 1996. All rights reserved.
D:\My Programs\My Own tests\HelloWindowsApp.java
D:\My Programs\My Own tests\HelloWindowsApp.java
D:\My Programs\My Own tests\HelloWindowsApp.java
Error executing jvc.exe.
HelloWindowsApp.class - 3 error(s), 0 warning(s)
the strange thing is this program will compile fine using the dos compiler: javac.
i.e javac HelloWindowsApp.java
no errors, so whats the problem???
ASKER
Have you tried compiling both your code in Visual J++ 1.1?
I get exactly the saem error, what I cannt understand which you may have missed is that, my first code comiles fine using
the dos command javac HelloWindowsApp.java, but will not compile in J++.
I get exactly the saem error, what I cannt understand which you may have missed is that, my first code comiles fine using
the dos command javac HelloWindowsApp.java, but will not compile in J++.
As I am not sure, I post as a comment. Tell me if this is an answer. The problem is the inner class. This is pure JDK 1.1 and I think that VJ++ does not support it. Take a look at the doc. about this (I don't have VJ++ by hand). If you put the inner class outside of HelloWindowsApp and turn new HelloWindowsApp.WindowEven tHandler() in new WindowEventHandler(), the program should compile without any problem.
ASKER
Thanks, but you have added a comment, and I cannt give you the credit for your answer. You answer was spot on, so if you want you deserve the points for this question, but I am unable to grade comments. :(
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
import java.awt.*;
import java.awt.event.*;
public class HelloWindowsApp extends Frame {
public static void main(String args[]){
HelloWindowsApp app = new HelloWindowsApp();
}
public HelloWindowsApp() {
super("Toby Rules the World!");
setSize(200,200);
addWindowListener(new HelloWindowsApp.WindowEven
show();
}
public void paint(Graphics g) {
g.drawString("Hello Windows!",50,90);
}
}
class WindowEventHandler extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
The problem, from looking at the code, is that the missplaced bracket causes the compiler to try to read class WindowEventHandler as a method of HelloWindowsApp instead of as an independent class.
Note that this will compile, but will not run. In order for it to run, you will need to rewrite it as:
import java.awt.*;
import java.awt.event.*;
public class HelloWindowsApp extends Frame {
public static void main(String args[]){
HelloWindowsApp app = new HelloWindowsApp();
}
public HelloWindowsApp() {
super("Toby Rules the World!");
setSize(200,200);
addWindowListener(new HelloWindowsApp.WindowEven
show();
}
public void paint(Graphics g) {
g.drawString("Hello Windows!",50,90);
}
void WindowEventHandler extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
}
Since event handlers are overriden methods of the object class.