0% found this document useful (0 votes)
58 views51 pages

Pelajaran GUI

The document describes how to create a basic Swing application in Java with multiple components. It shows how to: 1. Create a basic JFrame window and add components like buttons and text areas. 2. Add layout managers and add listener interfaces to allow communication between components like a toolbar and text area. 3. Define custom component classes like a text panel to encapsulate functionality and set component sizes using preferred dimensions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views51 pages

Pelajaran GUI

The document describes how to create a basic Swing application in Java with multiple components. It shows how to: 1. Create a basic JFrame window and add components like buttons and text areas. 2. Add layout managers and add listener interfaces to allow communication between components like a toolbar and text area. 3. Define custom component classes like a text panel to encapsulate functionality and set component sizes using preferred dimensions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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