You are on page 1of 51

Creating Basic Swing Application

1.

package appi;
import javax.swing.*;

public class Main {

public static void main(String[] args) {

JFrame frame = new JFrame("Window");


frame.setSize(600,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
}

Adding Components: Layout, Buttons, TextArea


2.
package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{


private JTextArea textArea;
private JButton btn;

public MainFrame(){
super("Window");
setLayout(new BorderLayout());
textArea = new JTextArea();
btn = new JButton("Click Me!");
/*btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
textArea.append("Hello\n");

});*/
add(textArea,BorderLayout.CENTER);
add(btn,BorderLayout.SOUTH);
setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}

3.
package appi;

public class Main {


public static void main(String[] args) {
MainFrame mf = new MainFrame();

}
}

Custom Components
4.
package appi;

import java.awt.BorderLayout;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class TextPanel extends javax.swing.JPanel {

private JTextArea textArea;


public TextPanel() {
textArea = new JTextArea();
setLayout(new BorderLayout());
add(textArea,BorderLayout.CENTER);
//add(new JScrollPane(textArea),BorderLayout.CENTER);
}
public void appendText(String s){
textArea.append(s);
}

5.
package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{


private TextPanel textPanel;
private JButton btn;

public MainFrame(){
super("Window");
setLayout(new BorderLayout());
textPanel = new TextPanel();
btn = new JButton("Click Me!");
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
textPanel.appendText("Hello\n");

});
add(textPanel,BorderLayout.CENTER);
add(btn,BorderLayout.SOUTH);
setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

Toolbar
6.
package appi;

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Toolbar extends JPanel{


private JButton helloButton;
private JButton goodbyeButton;
public Toolbar(){
helloButton=new JButton("Hello");
goodbyeButton=new JButton("Goodbye");
setLayout(new FlowLayout(FlowLayout.LEFT));
add(helloButton);
add(goodbyeButton);
};
}

7.
package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{


private TextPanel textPanel;
private JButton btn;
private Toolbar toolbar;

public MainFrame(){
super("Window");
setLayout(new BorderLayout());
toolbar = new Toolbar();
textPanel = new TextPanel();
btn = new JButton("Click Me!");
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
textPanel.appendText("Hello\n");

});
add(toolbar, BorderLayout.NORTH);
add(textPanel,BorderLayout.CENTER);
add(btn,BorderLayout.SOUTH);
setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

Communication Between Components


8.

package appi;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Toolbar extends JPanel implements ActionListener{


private JButton helloButton;
private JButton goodbyeButton;
private TextPanel textPanel;
public Toolbar(){
helloButton=new JButton("Hello");
goodbyeButton=new JButton("Goodbye");
goodbyeButton.addActionListener(this);
helloButton.addActionListener(this);
setLayout(new FlowLayout(FlowLayout.LEFT));
add(helloButton);
add(goodbyeButton);
};
public void setTextPanel(TextPanel textPanel){
this.textPanel=textPanel;
}

public void actionPerformed(ActionEvent e) {


// System.out.println("A Button Has Been Clicked!");
JButton click = (JButton)e.getSource();
if (click == helloButton){
textPanel.appendText("Hello");
}else if(click == goodbyeButton){
textPanel.appendText("Good bye");
}
}
}

9.

package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{


private TextPanel textPanel;
private JButton btn;
private Toolbar toolbar;

public MainFrame(){
super("Window");
setLayout(new BorderLayout());
toolbar = new Toolbar();
textPanel = new TextPanel();

toolbar.setTextPanel(textPanel);
btn = new JButton("Click Me!");
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
textPanel.appendText("Hello\n");

});
add(toolbar, BorderLayout.NORTH);
add(textPanel,BorderLayout.CENTER);
add(btn,BorderLayout.SOUTH);
setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

Listeners and Events: Using Interface to Cleanly


Separate Components
10.
package appi;

public interface StringListener {

public void stringEmitted(String text);}

11.

package appi;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Toolbar extends JPanel implements ActionListener{
private JButton helloButton;
private JButton goodbyeButton;
private StringListener textListener;
public Toolbar(){
helloButton=new JButton("Hello");
goodbyeButton=new JButton("Goodbye");
goodbyeButton.addActionListener(this);
helloButton.addActionListener(this);
setLayout(new FlowLayout(FlowLayout.LEFT));
add(helloButton);
add(goodbyeButton);
};
public void setStringListener(StringListener listener){
textListener = listener;
}
public void actionPerformed(ActionEvent e) {
// System.out.println("A Button Has Been Clicked!");
JButton click = (JButton)e.getSource();
if (click == helloButton){
if (textListener != null){
textListener.stringEmitted("Hello \n");
}
}else if(click == goodbyeButton){
if (textListener != null){
textListener.stringEmitted("Goodbye \n");
}
}
}
}

12.

ackage appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{


private TextPanel textPanel;
private Toolbar toolbar;

public MainFrame(){
super("Window");
setLayout(new BorderLayout());
toolbar = new Toolbar();
textPanel = new TextPanel();

toolbar.setStringListener(new StringListener(){
@Override
public void stringEmitted(String text) {
textPanel.appendText(text);
}
});

add(toolbar, BorderLayout.NORTH);
add(textPanel,BorderLayout.CENTER);

setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

Setting Component Sizes


13.

package appi;

import java.awt.Dimension;
import javax.swing.JPanel;

public class FormPanel extends JPanel{


public FormPanel(){
Dimension dim = getPreferredSize();
dim.width=250;
setPreferredSize(dim);
}
}

14.

package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{


private TextPanel textPanel;
private Toolbar toolbar;
private FormPanel formPanel;
public MainFrame(){
super("Window");
setLayout(new BorderLayout());
toolbar = new Toolbar();
textPanel = new TextPanel();
formPanel = new FormPanel();

toolbar.setStringListener(new StringListener(){
@Override
public void stringEmitted(String text) {
textPanel.appendText(text);
}

});
add(formPanel,BorderLayout.WEST);
add(toolbar, BorderLayout.NORTH);
add(textPanel,BorderLayout.CENTER);

setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

Setting Borders
15.

package appi;

import java.awt.Dimension;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.border.*;
public class FormPanel extends JPanel{
public FormPanel(){
Dimension dim = getPreferredSize();
dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));

}
}

16.

package appi;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Toolbar extends JPanel implements ActionListener{


private JButton helloButton;
private JButton goodbyeButton;
private StringListener textListener;
public Toolbar(){
setBorder(BorderFactory.createEtchedBorder());
helloButton=new JButton("Hello");
goodbyeButton=new JButton("Goodbye");
goodbyeButton.addActionListener(this);
helloButton.addActionListener(this);
setLayout(new FlowLayout(FlowLayout.LEFT));
add(helloButton);
add(goodbyeButton);
};
public void setStringListener(StringListener listener){
textListener = listener;
}

@Override
public void actionPerformed(ActionEvent e) {
// System.out.println("A Button Has Been Clicked!");
JButton click = (JButton)e.getSource();
if (click == helloButton){
if (textListener != null){
textListener.stringEmitted("Hello \n");
}
}else if(click == goodbyeButton){
if (textListener != null){
textListener.stringEmitted("Goodbye \n");
}
}
}
}

Text Fields and Labels


17.

package appi;

import java.awt.Dimension;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.*;
public class FormPanel extends JPanel{
private JLabel nameLabel;
private JLabel occupationLabel;
private JTextField namefield;
private JTextField occupationField;
private JButton okBtn;
public FormPanel(){
nameLabel = new JLabel("Name: ");
occupationLabel = new JLabel("Occupation: ");
namefield = new JTextField(10);
occupationField = new JTextField(10);
okBtn = new JButton();

Dimension dim = getPreferredSize();


dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));

}
}

Laying Out Control


18.

package appi;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.*;

public class FormPanel extends JPanel{


private JLabel nameLabel;
private JLabel occupationLabel;
private JTextField nameField;
private JTextField occupationField;
private JButton okBtn;
public FormPanel(){
nameLabel = new JLabel("Name: ");
occupationLabel = new JLabel("Occupation: ");
nameField = new JTextField(10);
occupationField = new JTextField(10);
okBtn = new JButton("OK");

Dimension dim = getPreferredSize();


dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));

setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();

//first row//
gc.weightx = 1;
gc.weighty = 0.1;
gc.gridx=0;
gc.gridy=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(nameLabel, gc);

gc.gridx=1;
gc.gridy=0;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(nameField, gc);

//second row//
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
gc.gridy=1;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(occupationLabel, gc);

gc.gridx=1;
gc.gridy=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(occupationField, gc);

//third row//
gc.weightx = 1;
gc.weighty = 1;

gc.gridx=1;
gc.gridy=2;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(okBtn, gc);
}
}

Custom Events and Form Submissions


19.

package appi;

import java.util.EventObject;

public class FormEvent extends EventObject{


private String name;
private String occupation;

public FormEvent(Object source) {


super(source);
}
public FormEvent(Object source, String name, String occupation) {
super(source);
this.name = name;
this.occupation = occupation;
}
public void setName(String name){
this.name = name;
}

public void setOccupation(String occ){


this.occupation = occ;
}

public String getName(){


return name;
}

public String getOccupation(){


return occupation;
}

20.

package appi;

import java.util.EventListener;

public interface FormListener extends EventListener{

public void formEventOccured(FormEvent e);

21.

package appi;

import java.util.EventObject;

public class FormEvent extends EventObject{


private String name;
private String occupation;

public FormEvent(Object source) {


super(source);
}
public FormEvent(Object source, String name, String occupation) {
super(source);
this.name = name;
this.occupation = occupation;
}
public void setName(String name){
this.name = name;
}

public void setOccupation(String occ){


this.occupation = occ;
}
public String getName(){
return name;
}

public String getOccupation(){


return occupation;
}

22.
package appi;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.*;

public class FormPanel extends JPanel{


private JLabel nameLabel;
private JLabel occupationLabel;
private JTextField nameField;
private JTextField occupationField;
private JButton okBtn;
private FormListener formListener;
public FormPanel(){
nameLabel = new JLabel("Name: ");
occupationLabel = new JLabel("Occupation: ");
nameField = new JTextField(10);
occupationField = new JTextField(10);
okBtn = new JButton("OK");
okBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String occupation = occupationField.getText();
FormEvent ev = new FormEvent(this, name, occupation);
if (formListener != null){
formListener.formEventOccured(ev);
}
}

});
Dimension dim = getPreferredSize();
dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));

setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();

//first row//
gc.weightx = 1;
gc.weighty = 0.1;
gc.gridx=0;
gc.gridy=0;
//gc.fill=GridBagConstraints.NONE;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(nameLabel, gc);

gc.gridx=1;
gc.gridy=0;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(nameField, gc);

//second row//
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
gc.gridy=1;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(occupationLabel, gc);

gc.gridx=1;
gc.gridy=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(occupationField, gc);

//second row//
gc.weightx = 1;
gc.weighty = 1;

gc.gridx=1;
gc.gridy=2;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(okBtn, gc);
}
public void setFormListener(FormListener listener){
this.formListener = listener;
}
}

23.

package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame2 extends JFrame{


private TextPanel textPanel;
private Toolbar toolbar;
private FormPanel formPanel;

public MainFrame2(){
super("Window");
setLayout(new BorderLayout());
toolbar = new Toolbar();
textPanel = new TextPanel();
formPanel = new FormPanel();

toolbar.setStringListener(new StringListener(){
@Override
public void stringEmitted(String text) {
textPanel.appendText(text);
}

});
formPanel.setFormListener(new FormListener(){
public void formEventOccured(FormEvent e){
String name = e.getName();
String occupation = e.getOccupation();
textPanel.appendText(name+": "+occupation+"\n");
}
});
add(formPanel,BorderLayout.WEST);
add(toolbar, BorderLayout.NORTH);
add(textPanel,BorderLayout.CENTER);

setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

List Box
24.

package appi;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.*;
public class FormPanel extends JPanel{
private JLabel nameLabel;
private JLabel occupationLabel;
private JTextField nameField;
private JTextField occupationField;
private JButton okBtn;
private FormListener formListener;
private JList ageList;
public FormPanel(){
nameLabel = new JLabel("Name: ");
occupationLabel = new JLabel("Occupation: ");
nameField = new JTextField(10);
occupationField = new JTextField(10);
ageList = new JList();
DefaultListModel ageModel = new DefaultListModel();
ageModel.addElement("Under 18");
ageModel.addElement("18 to 65");
ageModel.addElement("65 or over");
ageList.setModel(ageModel);
ageList.setPreferredSize(new Dimension(110,66));
ageList.setBorder(BorderFactory.createEtchedBorder());
ageList.setSelectedIndex(1);

okBtn = new JButton("OK");


okBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String occupation = occupationField.getText();
String ageCat = (String) ageList.getSelectedValue();
System.out.println(ageCat);

FormEvent ev = new FormEvent(this, name, occupation);


if (formListener != null){
formListener.formEventOccured(ev);
}
}

});
Dimension dim = getPreferredSize();
dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));

setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();

//first row//
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
gc.gridy=0;
//gc.fill=GridBagConstraints.NONE;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(nameLabel, gc);

gc.gridx=1;
gc.gridy=0;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(nameField, gc);

//second row//
gc.weightx = 1;
gc.weighty = 0.1;
gc.gridx=0;
gc.gridy=1;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(occupationLabel, gc);

gc.gridx=1;
gc.gridy=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(occupationField, gc);
//third row//
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=1;
gc.gridy=2;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(ageList, gc);

//fourth row//
gc.weightx = 1;
gc.weighty = 1;

gc.gridx=1;
gc.gridy=3;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(okBtn, gc);
}
public void setFormListener(FormListener listener){
this.formListener = listener;
}
}
Work with Listbox Data
25.

package appi;

import java.util.EventObject;

public class FormEvent extends EventObject{


private String name;
private String occupation;
private int ageCategory;

public FormEvent(Object source) {


super(source);
}
public FormEvent(Object source, String name, String occupation, int
agecat) {
super(source);
this.name = name;
this.occupation = occupation;
this.ageCategory = agecat;
}
public void setName(String name){
this.name = name;
}

public void setOccupation(String occ){


this.occupation = occ;
}

public String getName(){


return name;
}

public String getOccupation(){


return occupation;
}
public int getAgeCategory(){
return ageCategory;
}
}

26.

package appi;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.*;

public class FormPanel extends JPanel{


private JLabel nameLabel;
private JLabel occupationLabel;
private JTextField nameField;
private JTextField occupationField;
private JButton okBtn;
private FormListener formListener;
private JList ageList;
public FormPanel(){
nameLabel = new JLabel("Name: ");
occupationLabel = new JLabel("Occupation: ");
nameField = new JTextField(10);
occupationField = new JTextField(10);
ageList = new JList();
DefaultListModel ageModel = new DefaultListModel();
ageModel.addElement(new AgeCategory(0,"Under 18"));
ageModel.addElement(new AgeCategory(1,"18 to 65"));
ageModel.addElement(new AgeCategory(2,"65 or over"));
ageList.setModel(ageModel);
ageList.setPreferredSize(new Dimension(110,66));
ageList.setBorder(BorderFactory.createEtchedBorder());
ageList.setSelectedIndex(1);

okBtn = new JButton("OK");


okBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String occupation = occupationField.getText();
AgeCategory ageCat = (AgeCategory) ageList.getSelectedValue();
System.out.println(ageCat.getId());

FormEvent ev = new FormEvent(this, name, occupation,


ageCat.getId());
if (formListener != null){
formListener.formEventOccured(ev);
}
}

});
Dimension dim = getPreferredSize();
dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));

setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();

//first row//
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
gc.gridy=0;
//gc.fill=GridBagConstraints.NONE;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(nameLabel, gc);
gc.gridx=1;
gc.gridy=0;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(nameField, gc);

//second row//
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
gc.gridy=1;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(occupationLabel, gc);

gc.gridx=1;
gc.gridy=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(occupationField, gc);
//third row//
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=1;
gc.gridy=2;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(ageList, gc);

//fourth row//
gc.weightx = 1;
gc.weighty = 1;
gc.gridx=1;
gc.gridy=3;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(okBtn, gc);
}
public void setFormListener(FormListener listener){
this.formListener = listener;
}
}
class AgeCategory{
private int id;
private String text;
public AgeCategory(int id, String text){
this.id = id;
this.text = text;
}
public String toString(){
return text;
}

public int getId(){


return id;
}
}

27.

package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{


private TextPanel textPanel;
private Toolbar toolbar;
private FormPanel formPanel;

public MainFrame(){
super("Window");
setLayout(new BorderLayout());
toolbar = new Toolbar();
textPanel = new TextPanel();
formPanel = new FormPanel();

toolbar.setStringListener(new StringListener(){
@Override
public void stringEmitted(String text) {
textPanel.appendText(text);
}

});
formPanel.setFormListener(new FormListener(){
public void formEventOccured(FormEvent e){
String name = e.getName();
String occupation = e.getOccupation();
int ageCat = e.getAgeCategory();
textPanel.appendText(name+": "+occupation+": "+ageCat+"\n");
}
});
add(formPanel,BorderLayout.WEST);
add(toolbar, BorderLayout.NORTH);
add(textPanel,BorderLayout.CENTER);

setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

}
Combo Box
28.

package appi;

import java.util.EventObject;

public class FormEvent extends EventObject{


private String name;
private String occupation;
private int ageCategory;
private String empCat;

public FormEvent(Object source) {


super(source);
}
public FormEvent(Object source, String name, String occupation, int
agecat, String empCat) {
super(source);
this.name = name;
this.occupation = occupation;
this.ageCategory = agecat;
this.empCat = empCat;
}
public void setName(String name){
this.name = name;
}

public void setOccupation(String occ){


this.occupation = occ;
}

public String getName(){


return name;
}

public String getOccupation(){


return occupation;
}
public int getAgeCategory(){
return ageCategory;
}
public String getEmploymentCategory(){
return empCat;

}
}

29.

package appi;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.*;

public class FormPanel extends JPanel{


private JLabel nameLabel;
private JLabel occupationLabel;
private JTextField nameField;
private JTextField occupationField;
private JButton okBtn;
private FormListener formListener;
private JList ageList;
private JComboBox empCombo;

public FormPanel(){
nameLabel = new JLabel("Name: ");
occupationLabel = new JLabel("Occupation: ");
nameField = new JTextField(10);
occupationField = new JTextField(10);
ageList = new JList();
empCombo = new JComboBox();

//set up Listbox
DefaultListModel ageModel = new DefaultListModel();
ageModel.addElement(new AgeCategory(0,"Under 18"));
ageModel.addElement(new AgeCategory(1,"18 to 65"));
ageModel.addElement(new AgeCategory(2,"65 or over"));
ageList.setModel(ageModel);
ageList.setPreferredSize(new Dimension(110,66));
ageList.setBorder(BorderFactory.createEtchedBorder());
ageList.setSelectedIndex(1);

//set up combo box


DefaultComboBoxModel empModel = new DefaultComboBoxModel();
empModel.addElement("Employed");
empModel.addElement("Self-Employed");
empModel.addElement("unemployed");
empCombo.setModel(empModel);
empCombo.setSelectedIndex(0);
//empCombo.setEditable(true);

okBtn = new JButton("OK");


okBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String occupation = occupationField.getText();
AgeCategory ageCat = (AgeCategory) ageList.getSelectedValue();
String empCat = (String)empCombo.getSelectedItem();

System.out.println(empCat);

FormEvent ev = new FormEvent(this, name, occupation,


ageCat.getId(),empCat);
if (formListener != null){
formListener.formEventOccured(ev);
}
}

});
Dimension dim = getPreferredSize();
dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));
layoutComponents();
}
public void layoutComponents(){
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
//first row//
gc.gridy=1;
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
//gc.fill=GridBagConstraints.NONE;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(nameLabel, gc);

gc.gridx=1;
gc.gridy=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(nameField, gc);

//second row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(occupationLabel, gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(occupationField, gc);
//third row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(new JLabel("Age: "), gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(ageList, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(new JLabel("Employment: "), gc);
gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(empCombo, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty=1;

gc.gridx=1;

gc.insets = new Insets(0,0,0,0);


gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(okBtn, gc);

}
public void setFormListener(FormListener listener){
this.formListener = listener;
}
}
class AgeCategory{
private int id;
private String text;
public AgeCategory(int id, String text){
this.id = id;
this.text = text;
}
public String toString(){
return text;
}

public int getId(){


return id;
}
}

30.

package appi;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JTextArea;
public class MainFrame2 extends JFrame{

private TextPanel textPanel;

private Toolbar toolbar;

private FormPanel formPanel;

public MainFrame2(){

super("Window");

setLayout(new BorderLayout());

toolbar = new Toolbar();

textPanel = new TextPanel();

formPanel = new FormPanel();

toolbar.setStringListener(new StringListener(){

@Override

public void stringEmitted(String text) {

textPanel.appendText(text);

});

formPanel.setFormListener(new FormListener(){

public void formEventOccured(FormEvent e){

String name = e.getName();

String occupation = e.getOccupation();

int ageCat = e.getAgeCategory();

String empCat = e.getEmploymentCategory();

textPanel.appendText(name+": "+occupation+": "+ageCat+":


"+empCat+"\n");

});

add(formPanel,BorderLayout.WEST);

add(toolbar, BorderLayout.NORTH);

add(textPanel,BorderLayout.CENTER);
setSize(600,500);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

Check Box
31.

package appi;

import java.util.EventObject;

public class FormEvent extends EventObject{


private String name;
private String occupation;
private int ageCategory;
private String empCat;
private String taxId;
private boolean InaCitizen;

public FormEvent(Object source) {


super(source);
}
public FormEvent(Object source, String name, String occupation, int
agecat, String empCat, String taxId, boolean InaCitizen) {
super(source);
this.name = name;
this.occupation = occupation;
this.ageCategory = agecat;
this.empCat = empCat;
this.taxId=taxId;
this.InaCitizen = InaCitizen;
}
public void setName(String name){
this.name = name;
}

public void setOccupation(String occ){


this.occupation = occ;
}

public String getName(){


return name;
}
public String getOccupation(){
return occupation;
}
public int getAgeCategory(){
return ageCategory;
}
public String getEmploymentCategory(){
return empCat;

public String getTaxId() {


return taxId;
}

public boolean isInaCitizen() {


return InaCitizen;
}

32.

package appi;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.*;

public class FormPanel extends JPanel{


private JLabel nameLabel;
private JLabel occupationLabel;
private JTextField nameField;
private JTextField occupationField;
private JButton okBtn;
private FormListener formListener;
private JList ageList;
private JComboBox empCombo;
private JCheckBox citizenCheck;
private JTextField taxField;
private JLabel taxLabel;

public FormPanel(){
nameLabel = new JLabel("Name: ");
occupationLabel = new JLabel("Occupation: ");
nameField = new JTextField(100);
occupationField = new JTextField(100);
ageList = new JList();
empCombo = new JComboBox();
citizenCheck = new JCheckBox();
taxField = new JTextField(100);
taxLabel = new JLabel("Tax ID: ");

//set up tax ID
taxLabel.setEnabled(false);
taxField.setEnabled(false);

citizenCheck.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
boolean isTicked = citizenCheck.isSelected();
taxLabel.setEnabled(isTicked);
taxField.setEnabled(isTicked);
}

});

//set up Listbox
DefaultListModel ageModel = new DefaultListModel();
ageModel.addElement(new AgeCategory(0,"Under 18"));
ageModel.addElement(new AgeCategory(1,"18 to 65"));
ageModel.addElement(new AgeCategory(2,"65 or over"));
ageList.setModel(ageModel);
ageList.setPreferredSize(new Dimension(110,66));
ageList.setBorder(BorderFactory.createEtchedBorder());
ageList.setSelectedIndex(1);

//set up combo box


DefaultComboBoxModel empModel = new DefaultComboBoxModel();
empModel.addElement("Employed");
empModel.addElement("Self-Employed");
empModel.addElement("unemployed");
empCombo.setModel(empModel);
empCombo.setSelectedIndex(0);
empCombo.setEditable(true);

okBtn = new JButton("OK");


okBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String occupation = occupationField.getText();
AgeCategory ageCat = (AgeCategory) ageList.getSelectedValue();
String empCat = (String)empCombo.getSelectedItem();
String taxId = taxField.getText();
boolean InaCitizen = citizenCheck.isSelected();
System.out.println(empCat);

FormEvent ev = new FormEvent(this, name, occupation,


ageCat.getId(),empCat, taxId, InaCitizen);
if (formListener != null){
formListener.formEventOccured(ev);
}
}

});
Dimension dim = getPreferredSize();
dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));
layoutComponents();
}
public void layoutComponents(){
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();

//first row//
gc.gridy=1;
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
//gc.fill=GridBagConstraints.NONE;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(nameLabel, gc);

gc.gridx=1;
gc.gridy=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(nameField, gc);

//second row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(occupationLabel, gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(occupationField, gc);
//third row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(new JLabel("Age: "), gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(ageList, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(new JLabel("Employment: "), gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(empCombo, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(new JLabel("Indonesian Citizen: "), gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(citizenCheck, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(taxLabel, gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(taxField, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty=1;

gc.gridx=1;

gc.insets = new Insets(0,0,0,0);


gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(okBtn, gc);

}
public void setFormListener(FormListener listener){
this.formListener = listener;
}
}
class AgeCategory{
private int id;
private String text;
public AgeCategory(int id, String text){
this.id = id;
this.text = text;
}
public String toString(){
return text;
}

public int getId(){


return id;
}
}

33.

package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class MainFrame extends JFrame{
private TextPanel textPanel;
private Toolbar toolbar;
private FormPanel formPanel;

public MainFrame(){
super("Window");
setLayout(new BorderLayout());
toolbar = new Toolbar();
textPanel = new TextPanel();
formPanel = new FormPanel();

toolbar.setStringListener(new StringListener(){
@Override
public void stringEmitted(String text) {
textPanel.appendText(text);
}

});
formPanel.setFormListener(new FormListener(){
public void formEventOccured(FormEvent e){
String name = e.getName();
String occupation = e.getOccupation();
int ageCat = e.getAgeCategory();
String empCat = e.getEmploymentCategory();
textPanel.appendText(name+": "+occupation+": "+ageCat+":
"+empCat+"\n");
}
});
add(formPanel,BorderLayout.WEST);
add(toolbar, BorderLayout.NORTH);
add(textPanel,BorderLayout.CENTER);

setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

Radio Button
34.

package appi;

import java.util.EventObject;

public class FormEvent extends EventObject{


private String name;
private String occupation;
private int ageCategory;
private String empCat;
private String taxId;
private boolean InaCitizen;
private String gender;

public FormEvent(Object source) {


super(source);
}
public FormEvent(Object source, String name, String occupation, int
agecat, String empCat, String taxId, boolean InaCitizen, String gender) {
super(source);
this.name = name;
this.occupation = occupation;
this.ageCategory = agecat;
this.empCat = empCat;
this.taxId=taxId;
this.InaCitizen = InaCitizen;
this.gender = gender;
}

public String getGender() {


return gender;
}
public void setName(String name){
this.name = name;
}

public void setOccupation(String occ){


this.occupation = occ;
}

public String getName(){


return name;
}

public String getOccupation(){


return occupation;
}
public int getAgeCategory(){
return ageCategory;
}
public String getEmploymentCategory(){
return empCat;

public String getTaxId() {


return taxId;
}
public boolean isInaCitizen() {
return InaCitizen;
}

35.
package appi;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javafx.scene.layout.Border;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.border.*;

public class FormPanel extends JPanel{


private JLabel nameLabel;
private JLabel occupationLabel;
private JTextField nameField;
private JTextField occupationField;
private JButton okBtn;
private FormListener formListener;
private JList ageList;
private JComboBox empCombo;
private JCheckBox citizenCheck;
private JTextField taxField;
private JLabel taxLabel;

private JRadioButton maleRadio;


private JRadioButton femaleRadio;
private ButtonGroup genderGroup;

public FormPanel(){
nameLabel = new JLabel("Name: ");
occupationLabel = new JLabel("Occupation: ");
nameField = new JTextField(100);
occupationField = new JTextField(100);
ageList = new JList();
empCombo = new JComboBox();
citizenCheck = new JCheckBox();
taxField = new JTextField(100);
taxLabel = new JLabel("Tax ID: ");

maleRadio = new JRadioButton("Male");


femaleRadio = new JRadioButton("Female");
maleRadio.setActionCommand("male");
femaleRadio.setActionCommand("female");

genderGroup = new ButtonGroup();


maleRadio.setSelected(true);

genderGroup.add(maleRadio);
genderGroup.add(femaleRadio);

//set up tax ID
taxLabel.setEnabled(false);
taxField.setEnabled(false);

citizenCheck.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
boolean isTicked = citizenCheck.isSelected();
taxLabel.setEnabled(isTicked);
taxField.setEnabled(isTicked);
}

});

//set up Listbox
DefaultListModel ageModel = new DefaultListModel();
ageModel.addElement(new AgeCategory(0,"Under 18"));
ageModel.addElement(new AgeCategory(1,"18 to 65"));
ageModel.addElement(new AgeCategory(2,"65 or over"));
ageList.setModel(ageModel);
ageList.setPreferredSize(new Dimension(110,66));
ageList.setBorder(BorderFactory.createEtchedBorder());
ageList.setSelectedIndex(1);

//set up combo box


DefaultComboBoxModel empModel = new DefaultComboBoxModel();
empModel.addElement("Employed");
empModel.addElement("Self-Employed");
empModel.addElement("unemployed");
empCombo.setModel(empModel);
empCombo.setSelectedIndex(0);
empCombo.setEditable(true);

okBtn = new JButton("OK");


okBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String occupation = occupationField.getText();
AgeCategory ageCat = (AgeCategory) ageList.getSelectedValue();
String empCat = (String)empCombo.getSelectedItem();
String taxId = taxField.getText();
boolean InaCitizen = citizenCheck.isSelected();
String gender = genderGroup.getSelection().getActionCommand();
System.out.println(empCat);

FormEvent ev = new FormEvent(this, name, occupation,


ageCat.getId(),empCat, taxId, InaCitizen, gender);
if (formListener != null){
formListener.formEventOccured(ev);
}
}

});
Dimension dim = getPreferredSize();
dim.width=250;
setPreferredSize(dim);
TitledBorder innerBorder = BorderFactory.createTitledBorder("Add
Person");
javax.swing.border.Border outerBorder =
BorderFactory.createEmptyBorder(5, 5, 5, 5);

setBorder(BorderFactory.createCompoundBorder(outerBorder,innerBorder));
layoutComponents();
}
public void layoutComponents(){
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();

//first row//
gc.gridy=1;
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
//gc.fill=GridBagConstraints.NONE;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(nameLabel, gc);

gc.gridx=1;
gc.gridy=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(nameField, gc);

//second row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.1;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(occupationLabel, gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.LINE_START;
add(occupationField, gc);
//third row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(new JLabel("Age: "), gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(ageList, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(new JLabel("Employment: "), gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(empCombo, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(new JLabel("Indonesian Citizen: "), gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(citizenCheck, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
add(taxLabel, gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(taxField, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.05;

gc.gridx=0;
gc.insets = new Insets(0,0,0,5);
gc.anchor = GridBagConstraints.LINE_END;
add(new JLabel("Gender: "), gc);

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(maleRadio, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty = 0.2;

gc.gridx=1;
gc.insets = new Insets(0,0,0,0);
gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(femaleRadio, gc);

//next row//
gc.gridy++;
gc.weightx = 1;
gc.weighty=1;

gc.gridx=1;

gc.insets = new Insets(0,0,0,0);


gc.anchor = GridBagConstraints.FIRST_LINE_START;
add(okBtn, gc);

}
public void setFormListener(FormListener listener){
this.formListener = listener;
}
}
class AgeCategory{
private int id;
private String text;
public AgeCategory(int id, String text){
this.id = id;
this.text = text;
}
public String toString(){
return text;
}

public int getId(){


return id;
}
}

36.

package appi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame2 extends JFrame{


private TextPanel textPanel;
private Toolbar toolbar;
private FormPanel formPanel;

public MainFrame2(){
super("Window");
setLayout(new BorderLayout());
toolbar = new Toolbar();
textPanel = new TextPanel();
formPanel = new FormPanel();

toolbar.setStringListener(new StringListener(){
@Override
public void stringEmitted(String text) {
textPanel.appendText(text);
}

});
formPanel.setFormListener(new FormListener(){
public void formEventOccured(FormEvent e){
String name = e.getName();
String occupation = e.getOccupation();
int ageCat = e.getAgeCategory();
String empCat = e.getEmploymentCategory();
textPanel.appendText(name+": "+occupation+": "+ageCat+":
"+empCat+"\n");
System.out.println(e.getGender());
}
});
add(formPanel,BorderLayout.WEST);
add(toolbar, BorderLayout.NORTH);
add(textPanel,BorderLayout.CENTER);

setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

You might also like