Java Programming/Tutorials/Notepad
Creating a Notepad application
[edit | edit source]You wouldn't be able to learn Java wholly if you don't practice working on sample programs. Throughout these tutorials we will help you grasp the true workability with Java projects. The first tutorial in the series is that of creating a simple Windows based application that resembles a notepad.
Coding the basics
[edit | edit source]Setting the class structure
[edit | edit source]To start programming on our example, we need to write down a class
that
will encapsulate our Notepad application. We begin with a simple class structure that
is empty in the beginning and will be filled appropriately afterward.
Defining an entry point
[edit | edit source]- For an in-depth study into the structure of entry points, read the section on The Entry Point.
Because we need our class to be executed, we need an entry point to help it execute
while it is stand-alone. To do so, we define a main(...)
method that
would take care of the execution code.
public class Notepad
{
public static void main(String[] args)
{
}
}
Laying the base for a main frame
[edit | edit source]The next step is to lay the foundation for a frame on which the Notepad application
needs to be executed. For this, we import three generic packages namely
java.awt.*
, java.awt.event.*
and
javax.swing.*
. Now, because we have javax.swing.*
package
imported in our code, we can safely extend our Notepad
class with
the JFrame
class.
import java.awt.*; // AWT Components
import java.awt.event.*; // AWT Events
import javax.swing.*; // Swing Components
public class Notepad extends JFrame
{
public Notepad()
{
}
public static void main(String[] args)
{
}
}
Using the properties of the frame
[edit | edit source]Using the super()
method, we try calling the super-class' constructor
to access other properties and methods declared in the super-class. The constructor
call that we made is an explicit call, that is, we specifically called for it. But,
even if we hadn't called the super()
method, it would implicitly (or
automatically) be called.
In the code below, we try to access the methods inherited into the Notepad class in
two different ways. Notice the this
variable. The this
variable, as you might have had studied, helps to call the variables that are a
part of the class the variable is called within. The this
variable
used in this example is used to access the setSize(...)
and the
setDefaultCloseOperation(...)
methods whilst within the class.
These two methods help in setting the size of the form and then introducing a
DISPOSE_ON_CLOSE
event that would dispose or destroy the frame object
once the particular form is closed either by clicking the Close button or by
pressing Alt+F4.
Whilst in the main(...)
method, we initialize and instantiate the
Notepad object. Now because we have a Notepad object named notepad
with us, we can access public methods from its reference. We use the same
object to call the setVisible(...)
method. This would be the second
way that we can use to access an object's methods and properties.
import java.awt.*; // AWT Components
import java.awt.event.*; // AWT Events
import javax.swing.*; // Swing Components
public class Notepad extends JFrame
{
public Notepad()
{
super();
this.setSize(300, 300); // Set the frame size
this.setDefaultCloseOperation( // Automatically disposes the
JFrame.DISPOSE_ON_CLOSE); // frame when it closes
}
public static void main(String[] args)
{
Notepad notepad = new Notepad(); // Initialize and instantiate
// a Notepad object
notepad.setVisible(true); // Displaying the form
}
}
The code above is enough to display a blank frame that is of 300 pixel width and
300 pixel height aligned at the top-left corner of the desktop screen. Try closing
the frame to check if the DISPOSE_ON_CLOSE
code works. It should work!
Then for a test, try taking out the setDefaultCloseOperation(...)
method or just comment it to see what happens otherwise.