This code represents a simple example of how to use and implement Swing Menus to open additional forms. An alternate way, that doesn't use multiple forms but rather switches out JPanels in a single frame is the CardLayout. You may want to explore this in the documentation and with on-line examples.
Here are pictures of the programs menus and forms running.
File Menu
Edit Menu
After clicking the Form 1 menu
Here is the code for MainWindow.java which includes the menus.
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.*;
public class MainWindow extends JFrame implements ActionListener {
/**
* this form creates a simple menu
* under File there is only one menu item, Exit
* under Edit you have option to open Form1
* and Form2
*/
private static final long serialVersionUID = 1L;
JFrame frame;
JPanel panel;
JMenu menuFile;
JMenu menuEdit;
JMenuBar menuBar;
JMenuItem menuItem1;
JMenuItem menuItem2;
JMenuItem menuItem3;
public MainWindow(){
createMenu();
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(menuBar);
createPanel();
this.add(panel);
}
private void createMenu(){
//Declare a new menu bar
menuBar = new JMenuBar();
//create a Menu on that menu bar
menuFile = new JMenu("File");
//this sets a keyboard equivalent
//on PCs ALT F
menuFile.setMnemonic(KeyEvent.VK_F);
//Define the menu items
menuItem1 = new JMenuItem("Exit");
menuItem1.setMnemonic(KeyEvent.VK_X);
menuItem1.addActionListener(this);
menuEdit = new JMenu("Edit");
menuEdit.setMnemonic(KeyEvent.VK_E);
menuItem2=new JMenuItem("Form1");
menuItem2.setMnemonic(KeyEvent.VK_1);
menuItem2.addActionListener(this);
menuItem3 = new JMenuItem("Form2");
menuItem3.setMnemonic(KeyEvent.VK_2);
menuItem3.addActionListener(this);
//Add the menu items to the menus
menuFile.add(menuItem1);
menuEdit.add(menuItem2);
menuEdit.add(menuItem3);
//add the menus to the menu bar
menuBar.add(menuFile);
menuBar.add(menuEdit);
}
private void createPanel(){
panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel label=new JLabel("Main Form");
panel.add(label);
//frame.add(panel);
}
@Override
public void actionPerformed(ActionEvent arg0) {
Object source = arg0.getSource();
if(source==menuItem1)
System.exit(0);
if(source==menuItem2){
JFrame frame = new Form1();
frame.setBounds(200,200,350,120);
frame.setVisible(true);
}
if(source==menuItem3){
JFrame frame = new Form2();
frame.setBounds(200,200,350,120);
frame.setVisible(true);
}
}
}
Here are the two forms
Form1.java
import javax.swing.*;
import java.awt.FlowLayout;
public class Form1 extends JFrame {
public Form1(){
JFrame frame=new JFrame();
JPanel panel;
panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel label=new JLabel("Form1");
panel.add(label);
this.add(panel);
}
}
Form2.java
import javax.swing.*;
import java.awt.FlowLayout;
public class Form2 extends JFrame{
public Form2(){
JFrame frame=new JFrame();
JPanel panel;
panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel label=new JLabel("Form2");
panel.add(label);
this.add(panel);
}
}
Here is the Main.java class
import javax.swing.*;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
JFrame m = new MainWindow();
m.setBounds(100,100,350,120);
m.setVisible(true);
}
}


No comments:
Post a Comment