package SpringLayoutTest;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.Spring;
import javax.swing.SpringLayout;
/**
* Frame in care pentru aranjarea componentelor este folosit SpringLayout
* @author Dan
*
*/
public class FontDialogFrame extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
public FontDialogFrame()
{
setTitle("FontDialog");
setSize(WIDTH, HEIGHT);
JPanel panel = new JPanel();
SpringLayout layout = new SpringLayout();
panel.setLayout(layout);
ActionListener listner = new FontAction();
//Crearea Componentelor
JLabel faceLabel = new JLabel("Font Face: ");
face = new JComboBox<String>(new String[]
{
"Serif","SansSerif","Monospaced","Dialog","DialogInput"
});
face.addActionListener(listner);
JLabel sizeLabel = new JLabel("Size: ");
size = new JComboBox<String>(new String[]
{
"8","10","12","15","18","24","36","48"
});
size.addActionListener(listner);
bold = new JCheckBox("Bold");
bold.addActionListener(listner);
italic = new JCheckBox("Italic");
italic.addActionListener(listner);
sample = new JTextArea();
sample.setText("Write Something..");
sample.setEditable(false);
sample.setLineWrap(true);
sample.setBorder(BorderFactory.createEtchedBorder());
panel.add(faceLabel);
panel.add(sizeLabel);
panel.add(face);
panel.add(size);
panel.add(bold);
panel.add(italic);
panel.add(sample);
//Adaugarea resorturilor
Spring strut = Spring.constant(10);
Spring labelsEast = Spring.sum(strut,
Spring.max(
layout.getConstraints(faceLabel).getWidth(),
layout.getConstraints(sizeLabel).getWidth()));
layout.putConstraint(SpringLayout.EAST, faceLabel, labelsEast, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.EAST, sizeLabel, labelsEast, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, faceLabel, strut, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.NORTH, face, strut, SpringLayout.NORTH, panel);
Spring secondRowNorth = Spring.sum(strut,
Spring.max(
layout.getConstraint(SpringLayout.SOUTH,faceLabel),
layout.getConstraint(SpringLayout.SOUTH, face)));
layout.putConstraint(SpringLayout.NORTH, sizeLabel, secondRowNorth, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.NORTH, size, secondRowNorth, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, face, strut, SpringLayout.EAST, faceLabel);
layout.putConstraint(SpringLayout.WEST, size, strut, SpringLayout.EAST, sizeLabel);
layout.putConstraint(SpringLayout.WEST, bold, strut, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.WEST, italic, strut, SpringLayout.WEST, panel);
Spring s = Spring.constant(10,10000,10000);
Spring thirdRowNorth = Spring.sum(s,
Spring.max(
layout.getConstraint(SpringLayout.SOUTH, sizeLabel),
layout.getConstraint(SpringLayout.SOUTH, size)));
layout.putConstraint(SpringLayout.NORTH, bold, thirdRowNorth, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.NORTH, italic, s, SpringLayout.SOUTH, bold);
layout.putConstraint(SpringLayout.SOUTH, panel, s, SpringLayout.SOUTH, italic);
Spring secondColumnWest = Spring.sum(strut,
Spring.max(
layout.getConstraint(SpringLayout.EAST, face),
layout.getConstraint(SpringLayout.EAST, size)));
layout.putConstraint(SpringLayout.WEST, sample, secondColumnWest, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.SOUTH, sample, Spring.minus(strut), SpringLayout.SOUTH, panel);
layout.putConstraint(SpringLayout.NORTH, sample, strut, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.EAST, panel, strut, SpringLayout.EAST, sample);
add(panel);
}
private JComboBox<String> face;
private JComboBox<String> size;
private JCheckBox bold;
private JCheckBox italic;
private JTextArea sample;
class FontAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String fontFace = (String) face.getSelectedItem();
int fontStyle = (bold.isSelected() ? Font.BOLD : 0)+(italic.isSelected() ? Font.ITALIC : 0);
int fontSize = Integer.parseInt((String) size.getSelectedItem());
Font font = new Font(fontFace , fontStyle, fontSize);
sample.setFont(font);
sample.repaint();
}
}
public static final int WIDTH = 400;
public static final int HEIGHT = 200;
}