Can you define your own class that uses a JFrame
class as a base (parent) class?
Sure. The JFrame
class is a class like any other
and can be extended.
JFrame
Class
The usual way of writing a GUI is to define your own
class by extending the JFrame
class.
Here is a program that does that.
It also includes several other new features.
import java.awt.*; import javax.swing.*; class myFrame extends JFrame { // paint() is called automatically by the system // after it has displayed most of the frame, but // needs to finish by displaying your customizations. public void paint ( Graphics g ) { // draw a String at location x=10 y=50 g.drawString("A myFrame object", 10, 50 ); } } public class TestFrame2 { public static void main ( String[] args ) { myFrame frame = new myFrame(); // construct a myFrame object frame.setSize( 150, 100 ); // set it to 150 wide by 100 high frame.setVisible( true ); // ask it to become visible } }
The Java system has methods which display a frame
on the screen when needed (you saw them at work in the previous program).
The class myFrame
extends the class JFrame
.
The JFrame
class has a paint()
method which
is called by the Java system (not by you)
whenever the frame needs to be displayed.
To show a string in the minimal frame display
override the paint()
method in your class.
The picture shows what the display. As with the previous program, hit control-c in the DOS window to stop the program. (Remember to first click inside the DOS window so the control-c kills the correct program).