Showing posts with label JButton. Show all posts
Showing posts with label JButton. Show all posts

Friday, July 13, 2012

JFrame to JApplet Conversion Project | Dragging JButton

Program Description:

This is a simple Java project, a conversion project from JFrame to JApplet which was requested by someone in my Fan Page. I am trying to make the code as simple as possible and as short as possible so it can be understood easily.

Output:




Original Code:

import java.awt.event.*;
import javax.swing.*;

public class Demo extends JFrame implements MouseMotionListener{
JButton btn;
Demo(){
setSize(300, 300);
setVisible(true);
btn = new JButton("Drag me");
getContentPane().setLayout(null);
add(btn);
btn.setBounds(50, 50, 100, 40);
btn.addMouseMotionListener(this);
}
public static void main(String[] args){
new Demo();
}
public void mouseDragged(MouseEvent e) {
int x=(int) getMousePosition().getX();
int y=(int) getMousePosition().getY();
btn.setLocation(x, y);
}
public void mouseMoved(MouseEvent e) {

}

}

Code:

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class DemoApplet extends JApplet implements MouseMotionListener{
JButton btn = new JButton("Drag Me");

public void init() {
btn.setBounds(40,40,100,40);
Container pane = getContentPane();
FlowLayout flow = new FlowLayout();
pane.setLayout(flow);
pane.add(btn);
btn.addMouseMotionListener(this);
}

public void mouseDragged(MouseEvent e) {
int x=(int) getMousePosition().getX();
int y=(int) getMousePosition().getY();
btn.setLocation(x, y);
}
public void mouseMoved(MouseEvent e) {
}
}

Monday, April 23, 2012

How to put a JTextField, JLabel, and JButton above image

Program Description:

This Java program demonstrates on how to add JComponents above an image. The technique is simple, it is just a JPanel inside another JPanel.

We created a class called "backgroundClass" which extends to JPanel so that means our class "backgroundClass" is a JPanel. In our main JPanel the class "backgroundClass", we set there our background image then inside our main JPanel we added two JPanels which holds the JLabel, JTextField, and JButton.

By setting the background color of our JPanel 1 to transparent, we can see in the output that it is like the label, the buttons, and the textfields are actually placed above the image but it is not, instead it is a layer of panels, a JPanel placed inside another JPanel.

Output:
Code:

Main Program

/**
* File: interfaceAndImage.java
* Tiltle: How to put a JTextField, JLabel, and JButton above image
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;

public class interfaceAndImage extends JFrame {

//Constructing the class we created called "backgroundClass" so we can
//use it here in our main program as a parent panel.
backgroundClass bc;

//Initializing our JComponents and the labels of our JButton and JLabel
JPanel panel1, panel2;
JLabel labels[];
JButton choices[];
JTextField inputs[];
String lebelName[] = {"Name:","Age:","Sex:","Address:","Tel. No.:"};
String buttonChoice[] = {"Register","Reset","Cancel"};

//Setting up GUI
public interfaceAndImage() {

//Setting up the Title of the Window
super("How to put a JTextField, JLabel, and JButton above image");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(310,170);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Constructing the class "backgroundClass" and call the keyword "this" so it can
//be recognizable by our main program.
bc = new backgroundClass(this);

//Constructing JPanel 1 and set its layout property including the background property
//which is transparent
panel1 = new JPanel();
panel1.setLayout(new GridLayout(5,2));

//Constructing the class Color and set its property to 0,0,0,0 means no color.
Color trans = new Color(0,0,0,0);
panel1.setBackground(trans); //Setting JPanel 1 background to transparent


//Constructing JPanel 2 and set its layout property
panel2 = new JPanel();
panel2.setLayout(new GridLayout());

//Constructing our JComponents setting its specific array size
labels = new JLabel[5];
inputs = new JTextField[5];
choices = new JButton[3];

//Adding our JPanel 1 and 2 to our class "backgroundClass" which is our parent panel
bc.add(panel1, BorderLayout.NORTH);
bc.add(panel2, BorderLayout.SOUTH);

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

//Constructing JLabel and JTextField using "for loop" in their desired order
for(int count=0; count<inputs.length && count<labels.length; count++) {
labels[count] = new JLabel(lebelName[count], JLabel.RIGHT);
inputs[count] = new JTextField(30);

//Adding the JLabel and the JTextFied in JPanel 1
panel1.add(labels[count]);
panel1.add(inputs[count]);
}

//Constructing all 4 JButtons using "for loop" and add them in the panel 1
for(int count=0; count<choices.length; count++) {
choices[count] = new JButton(buttonChoice[count]);
panel2.add(choices[count]);
}

//Adding the class "backgroundClass" to our container as parent panel
pane.add(bc);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);

//Disable window size
setResizable(false);
}

//Main Method
public static void main (String[] args) {
interfaceAndImage iai = new interfaceAndImage();
}
}

Main JPanel (class "backgroundClass")

This is our main JPanel which holds our background image. This is where we also place our JButtons, JLabel, JTextField, and another JPanel by calling this class to our main Program.

/**
* File: backgroundClass.java
* Tiltle: Adding Image Above Another Image (class extention)
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;

public class backgroundClass extends JPanel {

//Initializing the class Image
Image background;

//Setting up GUI
public backgroundClass(interfaceAndImage iai) {

//Constructing the class "Toolkit" which will be used to manipulate our images.
Toolkit kit = Toolkit.getDefaultToolkit();

//Getting the "background.jpg" image we have in the folder
background = kit.getImage("background.jpg");
}

//Manipulate Images with JAVA2D API. . creating a paintComponent method.
public void paintComponent(Graphics comp) {

//Constructing the class Graphics2D. Create 2D by casting the "comp" to Graphics2D
Graphics2D comp2D = (Graphics2D)comp;

//creating a graphics2d using the images in the folder and place it in a specific coordinates.
comp2D.drawImage(background, 0, 0, this);
}
}

Thursday, April 19, 2012

JPanel Transparency Demo

Program Description:

I've been surfing in the internet about JPanel transparency and I found out that there are lots of code versions out there on how to make JPanel background color transparent and to tell you, the codes are not so easy to digest which means very bad for beginners.

So today I created a very simple code on how to make a semi-transparent JPanel and a total transparent JPanel which is very easy to follow and understand. I always make sure to organize my codes into a uniform format so the errors can easily be tracked, modified, and understand.

Kindly post a comment if there is something in the code you didn't understand.

Output:



Code:

/**
* File: jpanelTransparency.java
* Tiltle: JPanel Transparency Demo
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;
import java.awt.event.*;

public class jpanelTransparency extends JFrame {

//Initializing JComponents
JPanel testSubject, top, buttonPanel;
JButton normal, semiTrans, transparent;

//Setting up GUI
public jpanelTransparency() {

//Setting up the Title of the Window
super("JPanel Transparency Demo");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(430,200);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Constructing testSubject JPanel
testSubject = new JPanel();

//Constructing top JPanel and setting up its background color property
top = new JPanel();
top.setBackground(Color.blue);

//Constructing buttonPanel JPanel and setting up its layout property
buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1,3));

//Constructing all 3 JButtons
normal = new JButton("Normal");
semiTrans = new JButton("Semi-Transparent");
transparent = new JButton("Transparent");

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

//Setting up testSubject JPanel properties
testSubject.setBorder(BorderFactory.createLineBorder(Color.black,1));
testSubject.setBackground(Color.WHITE);
testSubject.setPreferredSize(new Dimension(100,100));

//Adding the "testSubject" JPanel inside "top" JPanel
top.add(testSubject);

//Adding all 3 JButtons inside buttonPanel JPanel
buttonPanel.add(normal);
buttonPanel.add(semiTrans);
buttonPanel.add(transparent);

//Implemeting Even-Listener on JButton using ActionListener
normal.addActionListener(
new ActionListener() {

//Handle JButton event if Enter key is pressed or if mouse is clicked.
public void actionPerformed(ActionEvent event) {

//Creating a white color as normal background color to our testSubject panel
Color whiteColor = new Color (255, 255, 255, 255);
testSubject.setBackground(whiteColor);
}
}
);

//Implemeting Even-Listener on JButton using ActionListener
semiTrans.addActionListener(
new ActionListener() {

//Handle JButton event if Enter key is pressed or if mouse is clicked.
public void actionPerformed(ActionEvent event) {

//Creating a semi-transparent red backgroud color to our testSubject panel
Color transparentRed = new Color (255, 0, 0, 25);
testSubject.setBackground(transparentRed);
}
}
);

//Implemeting Even-Listener on JButton using ActionListener
transparent.addActionListener(
new ActionListener() {

//Handle JButton event if Enter key is pressed or if mouse is clicked.
public void actionPerformed(ActionEvent event) {

//Set the background color to empty
testSubject.setBackground(null);
}
}
);

//Adding JPanel top and buttonPanel to the container
pane.add(top, BorderLayout.NORTH);
pane.add(buttonPanel, BorderLayout.SOUTH);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);
}

//Main Method
public static void main (String[] args) {
jpanelTransparency jt = new jpanelTransparency();
}
}

Important Part of the Program:

//Implemeting Even-Listener on JButton using ActionListener
semiTrans.addActionListener(
new ActionListener() {

//Handle JButton event if Enter key is pressed or if mouse is clicked.
public void actionPerformed(ActionEvent event) {

//Creating a semi-transparent red backgroud color to our testSubject panel
Color transparentRed = new Color (255, 0, 0, 25);
testSubject.setBackground(transparentRed);
}
}
);

//Implemeting Even-Listener on JButton using ActionListener
transparent.addActionListener(
new ActionListener() {

//Handle JButton event if Enter key is pressed or if mouse is clicked.
public void actionPerformed(ActionEvent event) {

//Set the background color to empty
testSubject.setBackground(null);
}
}
);

Sunday, April 8, 2012

Creating a simple Progress Bar using JProgressBar

Program Description:

Today, I have created a simple progress bar program in Java using JProgressBar which consists of two separate programs/classes, the Main Program and the Plugin which is the progress bar property. The reason I separate these two classes is to understand the flow of the progress bar property easily which is our main objective in this project. So enjoy and leave some comments.

Output:
Code:

simpleProgressBar.java
/**
* File: simpleProgressBar.java
* Tiltle: Creating a Simple Progress Bar
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;
import java.awt.event.*;

public class simpleProgressBar extends JFrame {

//Constructing JProgressBar and JButton
JProgressBar bar = new JProgressBar();
JButton button = new JButton("Test Progress Bar");

//Setting up GUI
public simpleProgressBar() {

//Setting up the Title of the Window
super("Creating a Simple Progress Bar");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(350,100);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

//Display the progress bar completion percentage label
bar.setStringPainted(true);

//Setting up the container layout
GridLayout grid = new GridLayout(2,1);
pane.setLayout(grid);

//Adding the progress bar and the button to the container
pane.add(bar);
pane.add(button);

//Implemeting Even-Listener on JButton
button.addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
button.setEnabled(false); //Disable the JButton if the progress bar starts the progress
Thread run = new threadPlugin(bar); //Calling the class "threadPlugin" we created that extends with Thread
run.start(); //run the thread to start the progress
}
}
);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);
}

//Main Method
public static void main (String[] args) {
simpleProgressBar spb = new simpleProgressBar();
}
}

threadPlugin.java
/**
* File: threadPlugin.java
* Tiltle: Creating a Simple Progress Bar (PLUGIN)
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;

public class threadPlugin extends Thread {

int Delay = 100; //Creating a delay or the speed of the progress bar
JProgressBar pb; //Constructing Progress Bar

//Creating a threadPlugin Method initializing JProgressBar so the Main Program "simpleProgressBar.java"
//can recognize by the time we call this class for JProgressBar action.
public threadPlugin(JProgressBar progressbar) {
pb = progressbar;
}

//run Method. This is the area where we can adjust the performance of our progress bar.
public void run() {
int minimum = pb.getMinimum(); //initializing minimum value of the progress bar
int maximum = pb.getMaximum(); //initializing maximum value of the progress bar

//Initializing Progress from its minimum value 0 to its maximum value 100
for (int i = minimum; i < maximum; i++) {
try {
int value = pb.getValue();
pb.setValue(value + 1);

//Testing the progress bar if it already reaches to its maximum value
if (pb.getValue() >= maximum) {

//Test confirmation if it runs perfectly
JOptionPane.showMessageDialog(null, "Test Successful!","Success!",JOptionPane.INFORMATION_MESSAGE);
}

Thread.sleep(Delay); //Implementing the speed of the progress bar
} catch (InterruptedException ignoredException) { //Catch an error if there is any
}
}
}
}

Tuesday, October 18, 2011

Retrieve Data From Database and Display Using JComboBox

Program Description:

The Java Program below is similar to the topic I created about retrieving data from database and display using JList, the only difference is that this program is using JComboBox instead of JList to display the retrieved data from MS Access Database. See "Important Part of the Program" below to compare and understand the whole java program easily.


Output:
Code:

/**
* File: retrieveDBUsingJCB.java
* Tiltle: Retrieve Data From Database and Display Using JComboBox
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class retrieveDBUsingJCB extends JFrame {

//Initializing program components
private JButton buttons[];
private JComboBox listBox;
private JPanel p1,p2;
private String bLabel[] = {"ID","First Name","Middle Name","Last Name","Age"};

Connection con;
Statement st;
ResultSet rs;
String db;

//Setting up GUI
public retrieveDBUsingJCB() {

//Setting up the Title of the Window
super("Retrieve DB and Display Using JComboBox");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(300,200);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Constructing JButtons and JComboBox
buttons = new JButton[5];
listBox = new JComboBox();

//Setting up JComboBox property
listBox.setMaximumRowCount(5);

//Constructing JPanel 1 and its property
p1 = new JPanel();
p1.setBorder(BorderFactory.createTitledBorder("Database: "));
p1.add(listBox); //Adding JComboBox in JPanel 1

//Constructing JPanel 2 and its property
p2 = new JPanel();
p2.setLayout(new GridLayout(5,1));
p2.setBorder(BorderFactory.createTitledBorder("Display: "));

//Constructing all 5 JButtons using "for loop" and add it in JPanel 2
for(int count=0; count<buttons.length; count++) {
buttons[count] = new JButton(bLabel[count]);
p2.add(buttons[count]);
}

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

//Setting up the container layout
GridLayout grid = new GridLayout(1,2);
pane.setLayout(grid);

//Creating a connection to MS Access and fetch errors using "try-catch" to check if it is successfully connected or not.
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
db = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=addItemDB.mdb;";
con = DriverManager.getConnection(db,"","");
st = con.createStatement();

} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Failed to Connect to Database","Error Connection", JOptionPane.WARNING_MESSAGE);
System.exit(0);
}

//Implemeting Even-Listener on JButton buttons[0] which is ID
buttons[0].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "id" from the table "person" in JComboBox
listBox.addItem(rs.getString("id"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[1] which is First Name
buttons[1].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "firstName" from the table "person" in JComboBox
listBox.addItem(rs.getString("firstName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[2] which is Middle Name
buttons[2].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "middleName" from the table "person" in JComboBox
listBox.addItem(rs.getString("middleName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[3] which is Last Name
buttons[3].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "lastName" from the table "person" in JComboBox
listBox.addItem(rs.getString("familyName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[4] which is Age
buttons[4].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "age" from the table "person" in JComboBox
listBox.addItem(rs.getString("age"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Adding components to the container
pane.add(p1);
pane.add(p2);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);
setResizable(false);
}

//Main Method
public static void main (String[] args) {
retrieveDBUsingJCB rdjcb = new retrieveDBUsingJCB();
}
}

Important Part of the Program:

//Implemeting Even-Listener on JButton buttons[0] which is ID
buttons[0].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "id" from the table "person" in JComboBox
listBox.addItem(rs.getString("id"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[1] which is First Name
buttons[1].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "firstName" from the table "person" in JComboBox
listBox.addItem(rs.getString("firstName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[2] which is Middle Name
buttons[2].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "middleName" from the table "person" in JComboBox
listBox.addItem(rs.getString("middleName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[3] which is Last Name
buttons[3].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "lastName" from the table "person" in JComboBox
listBox.addItem(rs.getString("familyName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[4] which is Age
buttons[4].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
listBox.removeAllItems();
//SQL for selecting the table "person" in the Database
rs=st.executeQuery("select * from person");
while (rs.next()) {
//Displaying the field "age" from the table "person" in JComboBox
listBox.addItem(rs.getString("age"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

Retrieve Data from Database and Display Using JList

Program Description:

The Program below is a Java Code that demonstrates on how to retrieve data from MS Access database and display it using JList. It has five buttons that corresponds to the database fields you want to display in the JList. This technique is commonly used in many programs so I have created a simple and easy to understand java codes in order to understand the flow of the whole program easily. Always refer to "Important Part of the Program".

Download: retrieveDBUsingJList.rar

Output:
Code:

/**
* File: retrieveDBUsingJList.java
* Tiltle: Retrieve Database and Display Using JList
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class retrieveDBUsingJList extends JFrame {

//Initializing program components
private DefaultListModel model;
private JButton buttons[];
private JList dbList;
private JPanel p1,p2;
private String bLabel[] = {"ID","First Name","Middle Name","Last Name","Age"};

Connection con;
Statement st;
ResultSet rs;
String db;

//Setting up GUI
public retrieveDBUsingJList() {

//Setting up the Title of the Window
super("Retrieve DB and Display Using JList");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(300,200);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Constructing JButtons, JList, and DefaultListModel
model = new DefaultListModel();
buttons = new JButton[5];
dbList = new JList(model);

//Setting up JList property
dbList.setVisibleRowCount(5);
dbList.setFixedCellHeight(27);
dbList.setFixedCellWidth(130);
dbList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

//Constructing JPanel 1 and its property
p1 = new JPanel();
p1.setBorder(BorderFactory.createTitledBorder("Database: "));
p1.add(new JScrollPane(dbList)); //Adding JList in JPanel 1

//Constructing JPanel 2 and its property
p2 = new JPanel();
p2.setLayout(new GridLayout(5,1));
p2.setBorder(BorderFactory.createTitledBorder("Display: "));

//Constructing all 5 JButtons using "for loop" and add it in JPanel 2
for(int count=0; count<buttons.length; count++) {
buttons[count] = new JButton(bLabel[count]);
p2.add(buttons[count]);
}

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

//Setting up the container layout
GridLayout grid = new GridLayout(1,2);
pane.setLayout(grid);

//Creating a connection to MS Access and fetch errors using "try-catch" to check if it is successfully connected or not.
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
db = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=addItemDB.mdb;";
con = DriverManager.getConnection(db,"","");
st = con.createStatement();

} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Failed to Connect to Database","Error Connection", JOptionPane.WARNING_MESSAGE);
System.exit(0);
}

//Implemeting Even-Listener on JButton buttons[0] which is ID
buttons[0].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("id"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[1] which is First Name
buttons[1].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("firstName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[2] which is Middle Name
buttons[2].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("middleName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[3] which is Last Name
buttons[3].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("familyName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[4] which is Age
buttons[4].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("age"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Adding components to the container
pane.add(p1);
pane.add(p2);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);
setResizable(false);
}

//Main Method
public static void main (String[] args) {
retrieveDBUsingJList rdjl = new retrieveDBUsingJList();
}
}

Important Part of the Program:

//Implemeting Even-Listener on JButton buttons[0] which is ID
buttons[0].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("id"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[1] which is First Name
buttons[1].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("firstName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[2] which is Middle Name
buttons[2].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("middleName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[3] which is Last Name
buttons[3].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("familyName"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

//Implemeting Even-Listener on JButton buttons[4] which is Age
buttons[4].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {
model.clear();
rs=st.executeQuery("select * from person");
while (rs.next()) {
model.addElement(rs.getString("age"));
}

} catch (Exception e) {
System.out.println("Retrieving Data Fail");
}
}
}
);

Sunday, October 9, 2011

Scan Database using First, Last, Next, and Previous Function

Program Description:

The Java Program below is a simple code on how to use the function First, Last, Next, and Previous in scanning data from MS Access Database. I made this program as simple and as short as possible in order to understand easily. It has been tested several times to make sure it runs perfectly. You can download the whole program below including the database to test properly:

Download: scanDatabase.rar

Output:
Code:

/**
* File: scanDatabase.java
* Tiltle: Scan Database Using First, Last, Next, Previous
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class scanDatabase extends JFrame {

//Initializing Program Components
private JTextField inputs[];
private JButton scan[];
private String butLabel[] = {"First","Last","Next","Prev"};
private JLabel labels[];
private String fldLabel[] = {"ID","First Name: ","Middle Name: ","Family Name: ","Age: "};
private JPanel p1,p2;

Connection con;
Statement st;
ResultSet rs;
String db;

//Setting up GUI
public scanDatabase() {

//Setting up the Title of the Window
super("Scan Database");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(305,160);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Constructing Program Components
inputs = new JTextField[5];
labels = new JLabel[5];
scan = new JButton[4];
p1 = new JPanel();
p1.setLayout(new GridLayout(5,2));
p2 = new JPanel();
p2.setLayout(new GridLayout(1,1));

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

//Creating a connection to MS Access and fetching errors using "try-catch" to check if it is successfully connected or not.
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
db = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=addItemDB.mdb;";
con = DriverManager.getConnection(db,"","");
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

rs=st.executeQuery("select * from person");
rs.first();

JOptionPane.showMessageDialog(null,"Successfully Connected to Database","Confirmation", JOptionPane.INFORMATION_MESSAGE);

} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Failed to Connect to Database","Error Connection", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}

//Constructing JLabel and JTextField using "for loop" in their desired order
for(int count=0; count<inputs.length && count<labels.length; count++) {
labels[count] = new JLabel(fldLabel[count]);
inputs[count] = new JTextField(30);
//Adding the JLabel and the JTextFied in JPanel 1
p1.add(labels[count]);
p1.add(inputs[count]);
}

//Constructing JButton using "for loop"
for(int count=0; count<scan.length; count++) {
scan[count] = new JButton(butLabel[count]);
//Adding the JButton in JPanel 2
p2.add(scan[count]);
}

//Implemeting Even-Listener on JButton first
scan[0].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {

rs=st.executeQuery("select * from person");
if (rs.first())
displayRes();

}catch (Exception e ) {
System.out.println("Fail to Connect to the Database");
}
}
}
);

//Implemeting Even-Listener on JButton last
scan[1].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {

rs=st.executeQuery("select * from person");
if (rs.last())
displayRes();

}catch (Exception e ) {
System.out.println("Fail to Connect to the Database");
}
}
}
);

//Implemeting Even-Listener on JButton next
scan[2].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {

if(rs!=null || (!rs.next()))
rs.next();
displayRes();

}catch (Exception e ) {
System.out.println("You have reached the last Data.");
}
}
}
);

//Implemeting Even-Listener on JButton last
scan[3].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {

if(rs!=null)
rs.previous();
displayRes();

}catch (Exception e ) {
System.out.println("You have reached the first Data.");
}
}
}
);

//Adding JPanel 1 and 2 to the container
pane.add(p1, BorderLayout.NORTH);
pane.add(p2, BorderLayout.SOUTH);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);
setResizable(false);
}

//Creating a method used to retrieve data from database and display in JTextField
public void displayRes() throws Exception {
inputs[0].setText(rs.getString(1));
inputs[1].setText(rs.getString(2));
inputs[2].setText(rs.getString(3));
inputs[3].setText(rs.getString(4));
inputs[4].setText(rs.getString(5));
}

//Main Method
public static void main (String[] args) {
scanDatabase sd = new scanDatabase();
}
}

Important Part of the Program:

//Implemeting Even-Listener on JButton first
scan[0].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {

rs=st.executeQuery("select * from person");
if (rs.first())
displayRes();

}catch (Exception e ) {
System.out.println("Fail to Connect to the Database");
}
}
}
);

//Implemeting Even-Listener on JButton last
scan[1].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {

rs=st.executeQuery("select * from person");
if (rs.last())
displayRes();

}catch (Exception e ) {
System.out.println("Fail to Connect to the Database");
}
}
}
);

//Implemeting Even-Listener on JButton next
scan[2].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {

if(rs!=null || (!rs.next()))
rs.next();
displayRes();

}catch (Exception e ) {
System.out.println("You have reached the last Data.");
}
}
}
);

//Implemeting Even-Listener on JButton last
scan[3].addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
try {

if(rs!=null)
rs.previous();
displayRes();

}catch (Exception e ) {
System.out.println("You have reached the first Data.");
}
}
}
);

Saturday, October 8, 2011

Adding Data to the Database using MS Access

Program Description:

The Program below is a very short, easy-to-understand java code that allows the user to add data to the database. The program is capable of detecting connection errors and input errors. You can download the whole program below including the database to properly test:

Download: addItemToDatabase.rar

Output:
Code:

/**
* File: addItemToDatabase.java
* Tiltle: Adding Data to the Database
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class addItemToDatabase extends JFrame {

//Initializing Components
private JTextField inputs[];
private JButton add, reset;
private JLabel labels[];
private String fldLabel[] = {"First Name: ","Middle Name: ","Family Name: ","Age: "};
private JPanel p1;

Connection con;
Statement st;
ResultSet rs;
String db;

//Setting up GUI
public addItemToDatabase() {

//Setting up the Title of the Window
super("Adding Data to the Database");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(300,180);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Constructing Components
inputs = new JTextField[4];
labels = new JLabel[4];
add = new JButton("Add");
reset = new JButton("Reset");
p1 = new JPanel();

//Setting Layout on JPanel 1 with 5 rows and 2 column
p1.setLayout(new GridLayout(5,2));

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

//Setting up the container layout
GridLayout grid = new GridLayout(1,1,0,0);
pane.setLayout(grid);

//Creating a connection to MS Access and fetching errors using "try-catch" to check if it is successfully connected or not.
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
db = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=addItemDB.mdb;";
con = DriverManager.getConnection(db,"","");
st = con.createStatement();

JOptionPane.showMessageDialog(null,"Successfully Connected to Database","Confirmation", JOptionPane.INFORMATION_MESSAGE);

} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Failed to Connect to Database","Error Connection", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}

//Constructing JLabel and JTextField using "for loop" in their desired order
for(int count=0; count<inputs.length && count<labels.length; count++) {
labels[count] = new JLabel(fldLabel[count]);
inputs[count] = new JTextField(20);

//Adding the JLabel and the JTextFied in JPanel 1
p1.add(labels[count]);
p1.add(inputs[count]);
}

//Implemeting Even-Listener on JButton add
add.addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {

if (inputs[0].getText().equals("") || inputs[1].getText().equals("") || inputs[2].getText().equals("") || inputs[0].getText() == null || inputs[1].getText() == null || inputs[2].getText() == null)
JOptionPane.showMessageDialog(null,"Fill up all the Fields","Error Input", JOptionPane.ERROR_MESSAGE);

else

try {

String add = "insert into person (firstName,middleName,familyName,age) values ('"+inputs[0].getText()+"','"+inputs[1].getText()+"','"+inputs[2].getText()+"',"+inputs[3].getText()+")";
st.execute(add); //Execute the add sql

Integer.parseInt(inputs[3].getText()); //Convert JTextField Age in to INTEGER

JOptionPane.showMessageDialog(null,"Item Successfully Added","Confirmation", JOptionPane.INFORMATION_MESSAGE);

}catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Please enter an integer on the Field AGE","Error Input", JOptionPane.ERROR_MESSAGE);
}catch (Exception ei) {
JOptionPane.showMessageDialog(null,"Failure to Add Item. Please Enter a number on the Field AGE","Error Input", JOptionPane.ERROR_MESSAGE);
}
}
}
);

//Implemeting Even-Listener on JButton reset
reset.addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {
inputs[0].setText(null);
inputs[1].setText(null);
inputs[2].setText(null);
inputs[3].setText(null);
}
}
);

//Adding JButton "add" and "reset" to JPanel 1 after the JLabel and JTextField
p1.add(add);
p1.add(reset);

//Adding JPanel 1 to the container
pane.add(p1);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);
}

//Main Method
public static void main (String[] args) {
addItemToDatabase aid = new addItemToDatabase();
}
}

Important Part of the Program:

//Implemeting Even-Listener on JButton add
add.addActionListener(
new ActionListener() {

//Handle JButton event if it is clicked
public void actionPerformed(ActionEvent event) {

if (inputs[0].getText().equals("") || inputs[1].getText().equals("") || inputs[2].getText().equals("") || inputs[0].getText() == null || inputs[1].getText() == null || inputs[2].getText() == null)
JOptionPane.showMessageDialog(null,"Fill up all the Fields","Error Input", JOptionPane.ERROR_MESSAGE);

else

try {

String add = "insert into person (firstName,middleName,familyName,age) values ('"+inputs[0].getText()+"','"+inputs[1].getText()+"','"+inputs[2].getText()+"',"+inputs[3].getText()+")";
st.execute(add); //Execute the add sql

Integer.parseInt(inputs[3].getText()); //Convert JTextField Age in to INTEGER

JOptionPane.showMessageDialog(null,"Item Successfully Added","Confirmation", JOptionPane.INFORMATION_MESSAGE);

}catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Please enter an integer on the Field AGE","Error Input", JOptionPane.ERROR_MESSAGE);
}catch (Exception ei) {
JOptionPane.showMessageDialog(null,"Failure to Add Item. Please Enter a number on the Field AGE","Error Input", JOptionPane.ERROR_MESSAGE);
}
}
}
);

Feel free to comment if the program doesn't work or if you have questions about the program. It has been tested many time so it runs perfectly.

Monday, September 26, 2011

Connect to MS Access Database

Program Description:

There are lots of versions of java codes out there demonstrating on how to connect java application to MS Access Database. Now I have created my own, simple, short, and easy to understand java code on how to connect to MS Access. What it does is that if you run the program, it will terminate if the connection to the database fails and if it succeeded a window will appear. To test the program if it is properly connected, just click the "Test Connection" button. The program will again terminate if the test connection fails and if it succeeded, a confirmation message will be stored in the database.

In order the program to work, you have to create a MS Access file with a filename "database", create a table name "Confirm" and in that table, create two fields name "confirm" and "confirm_to". You have to create the MS Access file in the folder where your java program is because of the code

db = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=database.mdb;";

which means your program can easily access or connect to the database as long as they are in the same folder.

Output:
Code:

/**
* File: databaseCon.java
* Tiltle: Database Connection Using MS Access
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class databaseCon extends JFrame implements ActionListener {

//Initializing components
private JButton connect;
private JTextField confirmation;
Connection con;
Statement st;
ResultSet rs;
String db;

//Setting up GUI
public databaseCon() {

//Setting up the Title of the Window
super("MS Access Connection");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(250,95);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Constructing Components
connect = new JButton("Test Connection");
confirmation = new JTextField(20);

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

//Setting up the container layout
FlowLayout flow = new FlowLayout(FlowLayout.CENTER);
pane.setLayout(flow);

//Creating a connection to MS Access and fetching errors using "try-catch" to check if it is successfully connected or not.
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
db = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=database.mdb;";
con = DriverManager.getConnection(db,"","");
st = con.createStatement();

confirmation.setText("Successfully Connected to Database");

} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Failed to Connect to Database","Error Connection", JOptionPane.WARNING_MESSAGE);
System.exit(0);
}

//Adding Event Listener to the button "Connect"
connect.addActionListener(this);

//Adding components to the container
pane.add(confirmation);
pane.add(connect);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);
}

//Creating an event to the JButton "Connect"
public void actionPerformed(ActionEvent event) {

try {
if(event.getSource() == connect ) {

//Adding values on the database field "confirm" and "confirm_to"
String insert = "insert into Confirm (confirm, confirm_to) values ('"+confirmation.getText()+"','"+confirmation.getText()+"')";
st.execute(insert); //Execute the sql

//This will display if the connection and the insertion of data to the database is successful.
confirmation.setText("Test Successful");

//Display what is in the database
rs=st.executeQuery("select * from Confirm");
while(rs.next()) {
System.out.println(rs.getString("confirm"));
}
}
}catch(Exception e) {
JOptionPane.showMessageDialog(null,"Failed to Connect to Database","Error Connection", JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
}

//Main Method
public static void main (String[] args) {
databaseCon pjtf = new databaseCon();
}
}

Important Part of the Program:

//Creating a connection to MS Access and fetching errors using "try-catch" to check if it is successfully connected or not.
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
db = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=database.mdb;";
con = DriverManager.getConnection(db,"","");
st = con.createStatement();

confirmation.setText("Successfully Connected to Database");

} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Failed to Connect to Database","Error Connection", JOptionPane.WARNING_MESSAGE);
System.exit(0);
}

Sunday, September 11, 2011

Creating a JDesktopPane

Program Description:

One of the interesting and useful part in making Java Program is creating a JDesktopPane which is an MDI (Multiple Document Interface) commonly used in today's applications. It is a main window called parent window that contains other windows called child windows. It is used to manage several open documents that are being processed in parallel. The Java Program below is a short simple code on how to create a JDesktopPane and JInternalFrame.

Output:


Code:

/**
* File: createJDesktoPane.java
* Tiltle: Creating a JDesktopPane
* Author: http://java-code-complete.blogspot.com/
*/

//Java Core Package
import javax.swing.*;
//Java Extension Package
import java.awt.*;
import java.awt.event.*;

public class createJDesktoPane extends JFrame {

//Initializing program components
private JDesktopPane desktopTest;
private JLabel labels[];
private JTextField inputs[];
private JButton buttons[];
private String labelName[]={"Enter Name: ","Enter Age: ","Enter Address: ","Enter Mobile#: "};
private String buttonName[] = {"Open","Save","Exit"};
private JPanel panel1, panel2;

//Setting up GUI
public createJDesktoPane() {

//Setting up the Title of the Window
super("Creating a JDesktopPane");

//Set Size of the Window (WIDTH, HEIGHT)
setSize(600,500);

//Exit Property of the Window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JMenuBar bar = new JMenuBar(); //Constructing JMenuBar
JMenu menu = new JMenu("File"); //Constructing JMenu name "File"
JMenuItem newFile = new JMenuItem("Add New Data"); //Constructing JMenuItem with "Add New Data" label

menu.add(newFile); //Adding JMenuItem in the JMenu
bar.add(menu); //Adding JMenu in the JMenuBar

setJMenuBar(bar); //Adding JMenuBar in the container

desktopTest = new JDesktopPane(); //Creating a JDesktopPane
desktopTest.setBackground(Color.BLACK); //Setting JDesktopPane background color

//Setting up the container ready for the components to be added.
Container pane = getContentPane();
setContentPane(pane);

pane.add(desktopTest); //Adding JDesktopPane in the container

//Implemeting Even-Listener on newFile JMenuItem
newFile.addActionListener(
new ActionListener() {

//Handle JMenuItem "newFile" event if it is clicked
public void actionPerformed(ActionEvent e) {

//Constructing an Internal Frame inside JDesktopPane
JInternalFrame frame = new JInternalFrame(null,true,true,true,true);

Container container = frame.getContentPane(); //Creating a container inside the JInternalFrame

//Constructing JLabel, JButton, and JTextField inside JInternalFrame
labels = new JLabel[4];
inputs = new JTextField[4];
buttons = new JButton[3];

//Creating a JPanel 1 with GridLayout of 4 rows and 2 columns inside JInternalFrame
panel1 = new JPanel();
panel1.setLayout(new GridLayout(4,2));

//Constructing JLabel and JTextField using "for loop" and add to JPanel 1
for(int count=0; count<labels.length && count<inputs.length; count++) {
labels[count] = new JLabel(labelName[count]);
inputs[count] = new JTextField(10);
panel1.add(labels[count]);
panel1.add(inputs[count]);
}

//Creating a JPanel 2 with GridLayout of 1 row and 3 columns inside JInternalFrame
panel2 = new JPanel();
panel2.setLayout(new GridLayout(1,3));

//Constructing JButton using "for loop" and add to JPanel 2
for(int count=0; count<buttons.length; count++) {
buttons[count] = new JButton(buttonName[count]);
panel2.add(buttons[count]);
}

//Adding JPanel 1 and 2 to the JInternalFrame container
container.add(panel1,BorderLayout.NORTH);
container.add(panel2,BorderLayout.CENTER);

frame.setTitle("Add New Data"); //Set the Title of the JInternalFrame
frame.setResizable(false); //Lock the size of the JInternalFrame
frame.setMaximizable(false); //Disable the Maximize function of JInternalFrame

//Set the size of JInternalFrame to the size of its content
frame.pack();

//Attached the JInternalFrame to JDesktopPane and show it by setting the visible in to "true"
desktopTest.add(frame);
frame.setVisible(true);
}
}
);

/**Set all the Components Visible.
* If it is set to "false", the components in the container will not be visible.
*/
setVisible(true);
}

//Main Method
public static void main (String[] args) {
createJDesktoPane dp = new createJDesktoPane();
}
}

Saturday, August 27, 2011

Arithmetic Operation using JOptionPane

Program Description:

The program below is a simple java code arithmetic operation using JButton as arithmetic operator selector and JOptionPane as user input. It is also capable of catching number format error like putting non-integer numbers.

Output:



Code:

/**

* File: arithmeticOperationJOptionPane.java

* Tiltle: Arithmetic Operation using JOptionPane

* Author: http://java-code-complete.blogspot.com/

*/



//Java Core Package

import javax.swing.*;

//Java Extension Package

import java.awt.*;

import java.awt.event.*;



public class arithmeticOperationJOptionPane extends JFrame {



//Initializing JButton and String operation as the label of each JButton

private JButton buttons[];

private String operation[] = {"Addition [+]","Subtraction [-]","Multiplication [x]","Division [/]"};



//Setting up GUI

public arithmeticOperationJOptionPane() {



//Setting up the Title of the Window

super("Arithmetic Operation using JOptionPane");



//Set Size of the Window (WIDTH, HEIGHT)

setSize(320,120);



//Exit Property of the Window

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



//Constructing JButton with a array size of 4

buttons = new JButton[4];



//Setting up the container ready for the components to be added.

Container pane = getContentPane();

setContentPane(pane);



//Setting up the container layout

GridLayout grid = new GridLayout(2,2);

pane.setLayout(grid);



//Constructing all 4 JButtons using "for loop" and add them in the container

for(int count=0; count<buttons.length; count++) {

buttons[count] = new JButton(operation[count]);

pane.add(buttons[count]);

}



//Implemeting Even-Listener on JButton button[0] which is addition

buttons[0].addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {

try { //fetch an error using "try-catch" function.



//Initializing important variables for operation

String input1, input2;

int num1, num2, result;



//Making two JOptionPane inputs

input1 = JOptionPane.showInputDialog("Please Input First Number: ");

input2 = JOptionPane.showInputDialog("Please Input Second Number: ");



//Converting the inputs to integer in order to do the Arithmetic operation by parsing the inputs.

num1 = Integer.parseInt(input1);

num2 = Integer.parseInt(input2);



//Processing Arithmetic Operation

result = num1 + num2;



//Display the result using JOptionPane

JOptionPane.showMessageDialog(null,result,"Result:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){ //Catch the error if the user inputs a non-integer value



//Display the error

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);

}

}

}

);



//Implemeting Even-Listener on JButton button[1] which is subtraction

buttons[1].addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {

try {

String input1, input2;

int num1, num2, result;



input1 = JOptionPane.showInputDialog("Please Input First Number: ");

input2 = JOptionPane.showInputDialog("Please Input Second Number: ");



num1 = Integer.parseInt(input1);

num2 = Integer.parseInt(input2);



result = num1 - num2;



JOptionPane.showMessageDialog(null,result,"Result:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);



}

}

}

);



//Implemeting Even-Listener on JButton button[2] which is multiplication

buttons[2].addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {

try {

String input1, input2;

int num1, num2, result;



input1 = JOptionPane.showInputDialog("Please Input First Number: ");

input2 = JOptionPane.showInputDialog("Please Input Second Number: ");



num1 = Integer.parseInt(input1);

num2 = Integer.parseInt(input2);



result = num1 * num2;



JOptionPane.showMessageDialog(null,result,"Result:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);



}

}

}

);



//Implemeting Even-Listener on JButton button[3] which is division

buttons[3].addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {

try {

String input1, input2;

int num1, num2, result;



input1 = JOptionPane.showInputDialog("Please Input First Number: ");

input2 = JOptionPane.showInputDialog("Please Input Second Number: ");



num1 = Integer.parseInt(input1);

num2 = Integer.parseInt(input2);



result = num1 / num2;



JOptionPane.showMessageDialog(null,result,"Result:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);



}

}

}

);



buttons[0].setMnemonic('A');

buttons[1].setMnemonic('S');

buttons[2].setMnemonic('M');

buttons[3].setMnemonic('D');



/**Set all the Components Visible.

* If it is set to "false", the components in the container will not be visible.

*/

setVisible(true);

setResizable(false); //Fix window height and width

}



//Main Method

public static void main (String[] args) {

arithmeticOperationJOptionPane pjtf = new arithmeticOperationJOptionPane();

}

}


Important Part of the Program:

//Constructing all 4 JButtons using "for loop" and add them in the container

for(int count=0; count<buttons.length; count++) {

buttons[count] = new JButton(operation[count]);

pane.add(buttons[count]);

}



//Implemeting Even-Listener on JButton button[0] which is addition

buttons[0].addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {

try { //fetch an error using "try-catch" function.



//Initializing important variables for operation

String input1, input2;

int num1, num2, result;



//Making two JOptionPane inputs

input1 = JOptionPane.showInputDialog("Please Input First Number: ");

input2 = JOptionPane.showInputDialog("Please Input Second Number: ");



//Converting the inputs to integer in order to do the Arithmetic operation by parsing the inputs.

num1 = Integer.parseInt(input1);

num2 = Integer.parseInt(input2);



//Processing Arithmetic Operation

result = num1 + num2;



//Display the result using JOptionPane

JOptionPane.showMessageDialog(null,result,"Result:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){ //Catch the error if the user inputs a non-integer value



//Display the error

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);

}

}

}

);



//Implemeting Even-Listener on JButton button[1] which is subtraction

buttons[1].addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {

try {

String input1, input2;

int num1, num2, result;



input1 = JOptionPane.showInputDialog("Please Input First Number: ");

input2 = JOptionPane.showInputDialog("Please Input Second Number: ");



num1 = Integer.parseInt(input1);

num2 = Integer.parseInt(input2);



result = num1 - num2;



JOptionPane.showMessageDialog(null,result,"Result:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);



}

}

}

);



//Implemeting Even-Listener on JButton button[2] which is multiplication

buttons[2].addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {

try {

String input1, input2;

int num1, num2, result;



input1 = JOptionPane.showInputDialog("Please Input First Number: ");

input2 = JOptionPane.showInputDialog("Please Input Second Number: ");



num1 = Integer.parseInt(input1);

num2 = Integer.parseInt(input2);



result = num1 * num2;



JOptionPane.showMessageDialog(null,result,"Result:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);



}

}

}

);



//Implemeting Even-Listener on JButton button[3] which is division

buttons[3].addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {

try {

String input1, input2;

int num1, num2, result;



input1 = JOptionPane.showInputDialog("Please Input First Number: ");

input2 = JOptionPane.showInputDialog("Please Input Second Number: ");



num1 = Integer.parseInt(input1);

num2 = Integer.parseInt(input2);



result = num1 / num2;



JOptionPane.showMessageDialog(null,result,"Result:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);



}

}

}

);

Thursday, August 18, 2011

Basic Arithmetic Operation using JRadioButton, JTextField, and JButton

Program Description:

The program below is a java code, a progject that demonstrates basic arithmetic operations using JTextField, JRadioButton, and JButton. This is a revised code from the blog PlaneCodes which I try to make the codes more understandable by putting comments and making it more organized.

The program can detect if there is no arithmetic operator selected. The program only accepts integer numbers and it will detect if the user puts double or float or string. The program can also recognize if the JTextFields are empty.

Output:
Code:

/**

* File: basicArithmeticOperation.java

* Tiltle: Basic Arithmetic Operation using JRadioButton, JTextField, and JButton

* Author: http://java-code-complete.blogspot.com

*/



//Java Core Package

import javax.swing.*;

//Java Extension Package

import java.awt.*;

import java.awt.event.*;



public class basicArithmeticOperation extends JFrame {



//Initializing JButton, JPanel, JRadioButton, JTextField, and the class ButtonGroup

private JPanel panel1, panel2;

private JRadioButton addition, multiplication, subtraction, division;

private JTextField input1, input2;

private JButton answer, reset;

private ButtonGroup group;





//Setting up GUI

public basicArithmeticOperation() {



//Setting up the Title of the Window

super("Basic Arithmetic Operation: +,-,*,/");



//Set Size of the Window (WIDTH, LENGTH)

setSize(475,100);



//Exit Property of the Window

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



//Constructing JRadioButton

addition = new JRadioButton("Addition[+]",false);

multiplication = new JRadioButton("Multiplication[x]",false);

subtraction = new JRadioButton("Subtraction[-]",false);

division = new JRadioButton("Division[/]",false);



//Constructing JPanel 1

panel1 = new JPanel();

panel1.setLayout(new GridLayout(1,4)); //setting layout on JPanel 1



//Adding JRadioButton in JPanel

panel1.add(addition);

panel1.add(multiplication);

panel1.add(subtraction);

panel1.add(division);



//Constructing the class ButtonGroup

group = new ButtonGroup();



//Group the four radio button using the class ButtonGroup

group.add(addition);

group.add(multiplication);

group.add(subtraction);

group.add(division);



//Constructing JPanel 2

panel2 = new JPanel();

panel2.setLayout(new GridLayout(1,4)); //setting layout on JPanel 2



//Constructing JTextField input1 and input2 with a size of 20

input1 = new JTextField(20);

input2 = new JTextField(20);



//Constructing JButton

answer = new JButton("Show Answer");

reset = new JButton("Reset");



//Adding JButton and JTextField in JPanel 2

panel2.add(input1);

panel2.add(input2);

panel2.add(answer);

panel2.add(reset);



//Setting up the container ready for the components to be added.

Container pane = getContentPane();

setContentPane(pane);



GridLayout grid = new GridLayout(2,1);

pane.setLayout(grid);



//Implemeting Even-Listener on JButton copy

answer.addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {



//If no arithmetic operator selected, a pop-up message will appear.

if (addition.isSelected() == false && multiplication.isSelected() == false && subtraction.isSelected() == false && division.isSelected() == false) {

JOptionPane.showMessageDialog(null, "Please Select an Arithmetic Operator","Error",JOptionPane.ERROR_MESSAGE);

}



if(addition.isSelected()==true){ //if "addition" radio button is selected

try { //fetch an error using "try-catch" function.

int a = Integer.parseInt(input1.getText()); //Convert JTextField input1 to integer by parsing and pass it to a variable "a" ready for arithmetic processing.

int b = Integer.parseInt(input2.getText()); //Convert JTextField input2 to integer by parsing and pass it to a variable "b" ready for arithmetic processing.

int ans = a+b; //Process the two inputs using addition.

JOptionPane.showMessageDialog(null, "The Answer is: "+ans,"Answer:",JOptionPane.INFORMATION_MESSAGE); //Display the answer using JOptionPane

} catch (NumberFormatException e){ //Catch the error if the user inputs a non-integer or number

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE); //Display the catched error using JOptionPane

} //end of try-catch function

} //end of "if" condition



if(multiplication.isSelected()==true){

try {

int a = Integer.parseInt(input1.getText());

int b = Integer.parseInt(input2.getText());

int ans = a*b;

JOptionPane.showMessageDialog(null, "The Answer is: "+ans,"Answer:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);

}



}



if(subtraction.isSelected()==true){

try {

int a = Integer.parseInt(input1.getText());

int b = Integer.parseInt(input2.getText());

int ans = a-b;

JOptionPane.showMessageDialog(null, "The Answer is: "+ans,"Answer:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);

}



}



if(division.isSelected()==true){

try {

int a = Integer.parseInt(input1.getText());

int b = Integer.parseInt(input2.getText());

int ans = a/b;

JOptionPane.showMessageDialog(null, "The Answer is: "+ans,"Answer:",JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e){

JOptionPane.showMessageDialog(null, "Please Input a Integer","Error",JOptionPane.ERROR_MESSAGE);

}

}

}

}

);



//Implemeting Even-Listener on JButton reset

reset.addActionListener(

new ActionListener() {



//Handle JButton event if it is clicked

public void actionPerformed(ActionEvent event) {



input1.setText(null); //Empty JTextField input1 ready for the next input

input2.setText(null); //Empty JTextField input2 ready for the next input

}

}

);



//Adding the two panels in the container

pane.add(panel1);

pane.add(panel2);



/**Set all the Components Visible.

* If it is set to "false", the components in the container will not be visible.

*/

setVisible(true);

setResizable(false);

}



//Main Method

public static void main (String[] args) {

basicArithmeticOperation bao = new basicArithmeticOperation();

}

}