/*This is another program of a GUI model. This is a GUI for the font dialogue of MSWord.
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class FontDialogue extends JFrame{
private JPanel pnlfont,pnleffect,pnlpreview,pnlbutton,pnledit;
private GridBagConstraints c =new GridBagConstraints();
private GridBagLayout gbl = new GridBagLayout();
public FontDialogue(String title){
super(title);
setLayout(new BorderLayout());
setSize(800,500);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addPanels();
setVisible(true);
}
public void addPanels(){
//top panel
pnledit = new JPanel();
pnledit.setLayout(new GridLayout(3,1));
pnledit.setBackground(Color.WHITE);
add(pnledit,BorderLayout.CENTER);
//font panel
pnlfont = new JPanel();
pnlfont.setLayout(gbl);
pnlfont.setBackground(Color.WHITE);
pnledit.add(pnlfont);
panelFont(pnlfont);
//effect panel
pnleffect = new JPanel();
pnleffect.setLayout(new GridLayout(4,3));
pnleffect.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK),"Effects"));
pnleffect.setBackground(Color.WHITE);
pnledit.add(pnleffect);
panelEffect(pnleffect);
//preview panel
pnlpreview = new JPanel();
pnlpreview.setLayout(gbl);
pnlpreview.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK),"Preview"));
pnlpreview.setBackground(Color.WHITE);
pnledit.add(pnlpreview);
panelPreview(pnlpreview);
//bottom panel
pnlbutton = new JPanel();
add(pnlbutton,BorderLayout.SOUTH);
pnlbutton.setBorder(BorderFactory.createLineBorder(Color.BLUE));
pnlbutton.setLayout(gbl);
panelButton(pnlbutton);
}
public void listInit(DefaultListModel dlm,JPanel pnl){
JList lst;
lst = new JList(dlm);
lst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
lst.setVisibleRowCount(5);
JScrollPane listScrollPane = new JScrollPane(lst);
pnl.add(listScrollPane,c);
}
public void panelFont(JPanel pnl){
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(5,10,5,15);
//first row
JLabel lbl;
String[] name={"Font:","Font Style:","Size:"};
for(int i = 0 ; i < name.length ; i++){
c.gridx = i;
lbl = new JLabel(name[i]);
pnl.add(lbl,c);
}
//second row
c.gridy = 1;
c.weightx = 0.1;
JTextField txt;
for(int i = 0 ; i < 3 ; i ++){
c.gridx = i;
txt = new JTextField("",10);
pnl.add(txt,c);
}
//third row
c.gridy = 2;
c.weightx = 0;
DefaultListModel fontlistmodel = new DefaultListModel();
DefaultListModel stylelistmodel = new DefaultListModel();
DefaultListModel sizelistmodel = new DefaultListModel();
String[] fonts = {"+Body","+Heading","Agra","Agency FB","Aharoni","Akbar-bold","Aldhabi","Book Antiqua","Broadway","Calibri"};
String[] style = {"Regular","Italic","Bold","Bold Italic"};
int[] size = {8,9,10,11,12,14,16,18,20,22,24,26,28,36};
for(int i = 0 ; i < fonts.length ; i++){
fontlistmodel.addElement(fonts[i]);
}
for(int i = 0 ; i < style.length ; i++){
stylelistmodel.addElement(style[i]);
}
for(int i = 0 ; i < size.length ; i++){
sizelistmodel.addElement(size[i]);
}
c.gridx = 0;
listInit(fontlistmodel,pnl);
c.gridx = 1;
listInit(stylelistmodel,pnl);
c.gridx = 2;
listInit(sizelistmodel,pnl);
//fourth row
c.gridy = 3;
String[] names = {"Font Color:","Underline style:","Underline color:"};
for(int i = 0 ; i < names.length ; i++){
c.gridx = i;
lbl = new JLabel(names[i]);
pnl.add(lbl,c);
}
//fifth row
c.gridy = 4;
JComboBox cmb;
String[] colorname = {"Automatic","(none)","Automatic"};
for(int i = 0 ; i < 3 ; i++){
c.gridx = i;
cmb = new JComboBox(colorname);
cmb.setSelectedIndex(i);
pnl.add(cmb,c);
}
c.insets = new Insets(0,0,0,0);
}
public void panelEffect(JPanel pnl){
String[] effects = {"Strikethrough","Shadow","Small caps","Double strikethrough","Outline","All caps","Superscript","Emboss","Hidden","Subscript","Engrave"};
JCheckBox chk;
for(int i = 0 ; i < effects.length ; i++){
chk = new JCheckBox();
chk.setBackground(Color.WHITE);
chk.setText(effects[i]);
pnl.add(chk);
}
}
public void panelPreview(JPanel pnl){
//preview box
c.gridy = 0;
c.insets = new Insets(0,10,0,5);
ImageIcon img = new ImageIcon("Font logo.png");
JLabel lbl = new JLabel(img);
pnl.add(lbl,c);
//Description
c.gridy = 1;
lbl = new JLabel("This is the heading theme font. The current document theme defineswhich font will be");
pnl.add(lbl,c);
c.gridy = 2;
lbl = new JLabel("used");
pnl.add(lbl,c);
}
public void panelButton(JPanel pnl){
JButton btn;
String[] btnname = {"Default...","Ok","Cancel"};
c.anchor = GridBagConstraints.FIRST_LINE_START;
for(int i = 0 ; i < btnname.length ; i++){
c.gridx = i;
if(i == 0){
c.insets = new Insets(0,0,0,300);
}
else{
c.insets = new Insets(0,0,0,0);
}
btn = new JButton(btnname[i]);
pnl.add(btn,c);
}
}
public static void main (String[] args) {
FontDialogue font = new FontDialogue("Font");
font.pack();
}
}
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class FontDialogue extends JFrame{
private JPanel pnlfont,pnleffect,pnlpreview,pnlbutton,pnledit;
private GridBagConstraints c =new GridBagConstraints();
private GridBagLayout gbl = new GridBagLayout();
public FontDialogue(String title){
super(title);
setLayout(new BorderLayout());
setSize(800,500);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addPanels();
setVisible(true);
}
public void addPanels(){
//top panel
pnledit = new JPanel();
pnledit.setLayout(new GridLayout(3,1));
pnledit.setBackground(Color.WHITE);
add(pnledit,BorderLayout.CENTER);
//font panel
pnlfont = new JPanel();
pnlfont.setLayout(gbl);
pnlfont.setBackground(Color.WHITE);
pnledit.add(pnlfont);
panelFont(pnlfont);
//effect panel
pnleffect = new JPanel();
pnleffect.setLayout(new GridLayout(4,3));
pnleffect.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK),"Effects"));
pnleffect.setBackground(Color.WHITE);
pnledit.add(pnleffect);
panelEffect(pnleffect);
//preview panel
pnlpreview = new JPanel();
pnlpreview.setLayout(gbl);
pnlpreview.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK),"Preview"));
pnlpreview.setBackground(Color.WHITE);
pnledit.add(pnlpreview);
panelPreview(pnlpreview);
//bottom panel
pnlbutton = new JPanel();
add(pnlbutton,BorderLayout.SOUTH);
pnlbutton.setBorder(BorderFactory.createLineBorder(Color.BLUE));
pnlbutton.setLayout(gbl);
panelButton(pnlbutton);
}
public void listInit(DefaultListModel dlm,JPanel pnl){
JList lst;
lst = new JList(dlm);
lst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
lst.setVisibleRowCount(5);
JScrollPane listScrollPane = new JScrollPane(lst);
pnl.add(listScrollPane,c);
}
public void panelFont(JPanel pnl){
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(5,10,5,15);
//first row
JLabel lbl;
String[] name={"Font:","Font Style:","Size:"};
for(int i = 0 ; i < name.length ; i++){
c.gridx = i;
lbl = new JLabel(name[i]);
pnl.add(lbl,c);
}
//second row
c.gridy = 1;
c.weightx = 0.1;
JTextField txt;
for(int i = 0 ; i < 3 ; i ++){
c.gridx = i;
txt = new JTextField("",10);
pnl.add(txt,c);
}
//third row
c.gridy = 2;
c.weightx = 0;
DefaultListModel fontlistmodel = new DefaultListModel();
DefaultListModel stylelistmodel = new DefaultListModel();
DefaultListModel sizelistmodel = new DefaultListModel();
String[] fonts = {"+Body","+Heading","Agra","Agency FB","Aharoni","Akbar-bold","Aldhabi","Book Antiqua","Broadway","Calibri"};
String[] style = {"Regular","Italic","Bold","Bold Italic"};
int[] size = {8,9,10,11,12,14,16,18,20,22,24,26,28,36};
for(int i = 0 ; i < fonts.length ; i++){
fontlistmodel.addElement(fonts[i]);
}
for(int i = 0 ; i < style.length ; i++){
stylelistmodel.addElement(style[i]);
}
for(int i = 0 ; i < size.length ; i++){
sizelistmodel.addElement(size[i]);
}
c.gridx = 0;
listInit(fontlistmodel,pnl);
c.gridx = 1;
listInit(stylelistmodel,pnl);
c.gridx = 2;
listInit(sizelistmodel,pnl);
//fourth row
c.gridy = 3;
String[] names = {"Font Color:","Underline style:","Underline color:"};
for(int i = 0 ; i < names.length ; i++){
c.gridx = i;
lbl = new JLabel(names[i]);
pnl.add(lbl,c);
}
//fifth row
c.gridy = 4;
JComboBox cmb;
String[] colorname = {"Automatic","(none)","Automatic"};
for(int i = 0 ; i < 3 ; i++){
c.gridx = i;
cmb = new JComboBox(colorname);
cmb.setSelectedIndex(i);
pnl.add(cmb,c);
}
c.insets = new Insets(0,0,0,0);
}
public void panelEffect(JPanel pnl){
String[] effects = {"Strikethrough","Shadow","Small caps","Double strikethrough","Outline","All caps","Superscript","Emboss","Hidden","Subscript","Engrave"};
JCheckBox chk;
for(int i = 0 ; i < effects.length ; i++){
chk = new JCheckBox();
chk.setBackground(Color.WHITE);
chk.setText(effects[i]);
pnl.add(chk);
}
}
public void panelPreview(JPanel pnl){
//preview box
c.gridy = 0;
c.insets = new Insets(0,10,0,5);
ImageIcon img = new ImageIcon("Font logo.png");
JLabel lbl = new JLabel(img);
pnl.add(lbl,c);
//Description
c.gridy = 1;
lbl = new JLabel("This is the heading theme font. The current document theme defineswhich font will be");
pnl.add(lbl,c);
c.gridy = 2;
lbl = new JLabel("used");
pnl.add(lbl,c);
}
public void panelButton(JPanel pnl){
JButton btn;
String[] btnname = {"Default...","Ok","Cancel"};
c.anchor = GridBagConstraints.FIRST_LINE_START;
for(int i = 0 ; i < btnname.length ; i++){
c.gridx = i;
if(i == 0){
c.insets = new Insets(0,0,0,300);
}
else{
c.insets = new Insets(0,0,0,0);
}
btn = new JButton(btnname[i]);
pnl.add(btn,c);
}
}
public static void main (String[] args) {
FontDialogue font = new FontDialogue("Font");
font.pack();
}
}