Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package weekTwo;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.GridBagConstraints;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- public class TaskTwo {
- public static void main(String[] args) {
- JFrame window = new JFrame("Font Chooser");
- window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- window.setSize(500, 100);
- Container pane = window.getContentPane();
- pane.setLayout(new GridBagLayout());
- GridBagConstraints gbc = new GridBagConstraints();
- JTextField text = new JTextField();
- gbc.gridx = 2;
- gbc.gridy = 2;
- gbc.weightx = 1;
- gbc.weighty = 1;
- gbc.insets = new Insets(0, 0, 5, 5); //padding constraints
- gbc.fill = GridBagConstraints.BOTH; //text field fills cell
- pane.add(text, gbc);
- FontSetter fontSetter = new FontSetter(text);
- JCheckBox bold = new JCheckBox("Bold");
- gbc.gridx = 0; //sets x position to 0
- gbc.gridy = 1;
- bold.addActionListener(new Bold(fontSetter, text));
- pane.add(bold, gbc);
- JCheckBox italic = new JCheckBox("Italic");
- gbc.gridx = 0;
- gbc.gridy = 3;
- italic.addActionListener(new Italic(fontSetter, text));
- pane.add(italic, gbc);
- JRadioButton times = new JRadioButton("Times", true);
- gbc.gridx = 1;
- gbc.gridy = 0;
- times.addActionListener(new Times(fontSetter, text));
- pane.add(times, gbc);
- JRadioButton helvetica = new JRadioButton("Helvetica", false);
- gbc.gridx = 1;
- gbc.gridy = 2;
- helvetica.addActionListener(new Helvetica(fontSetter, text));
- pane.add(helvetica, gbc);
- JRadioButton courier = new JRadioButton("Courier", false);
- gbc.gridx = 1;
- gbc.gridy = 4;
- courier.addActionListener(new Courier(fontSetter, text));
- pane.add(courier, gbc);
- ButtonGroup fonts = new ButtonGroup(); //now only one of these buttons can be selected at once
- fonts.add(times);
- fonts.add(helvetica);
- fonts.add(courier);
- JButton ok = new JButton("OK");
- gbc.gridx = 3;
- gbc.gridy = 2;
- //ok.addActionListener();
- pane.add(ok, gbc);
- window.setVisible(true);
- }
- }
- class Bold implements ActionListener {
- private final FontSetter fontSetter;
- private final JTextField textfield;
- Bold(FontSetter fontSetter, JTextField textfield) {
- this.fontSetter = fontSetter;
- this.textfield = textfield;
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- JCheckBox ch = (JCheckBox) e.getSource();
- fontSetter.setBold(ch.isSelected());
- }
- }
- class Italic implements ActionListener {
- private final FontSetter fontSetter;
- private final JTextField textfield;
- Italic(FontSetter fontSetter, JTextField textfield) {
- this.fontSetter = fontSetter;
- this.textfield = textfield;
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- JCheckBox ch = (JCheckBox) e.getSource();
- fontSetter.setItalic(ch.isSelected());
- }
- }
- class Times implements ActionListener {
- private final FontSetter fontSetter;
- private final JTextField textfield;
- Times(FontSetter fontSetter, JTextField textfield) {
- this.fontSetter = fontSetter;
- this.textfield = textfield;
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- fontSetter.setFontName("Helvetica");
- textfield.setText("Times");
- }
- }
- class Helvetica implements ActionListener {
- private final FontSetter fontSetter;
- private final JTextField textfield;
- Helvetica(FontSetter fontSetter, JTextField textfield) {
- this.fontSetter = fontSetter;
- this.textfield = textfield;
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- fontSetter.setFontName("Helvetica");
- textfield.setText("Helvetica");
- }
- }
- class Courier implements ActionListener {
- private final FontSetter fontSetter;
- private final JTextField textfield;
- Courier(FontSetter fontSetter, JTextField textfield) {
- this.fontSetter = fontSetter;
- this.textfield = textfield;
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- fontSetter.setFontName("Courier");
- textfield.setText("Courier");
- }
- }
- class FontSetter {
- private final JTextField text;
- private String fontName = "Times";
- private boolean isBold = false;
- private boolean isItalic = false;
- FontSetter(JTextField text) {
- this.text = text;
- }
- void setBold(boolean flag) {
- isBold = flag;
- applyFontChanges();
- }
- void setItalic(boolean flag) {
- isItalic = flag;
- applyFontChanges();
- }
- void setFontName(String fontName) {
- this.fontName = fontName;
- applyFontChanges();
- }
- private void applyFontChanges(){
- Font font;
- int style;
- if(isBold && isItalic){
- style = Font.BOLD + Font.ITALIC;
- } else if(isBold){
- style = Font.BOLD;
- } else if(isItalic){
- style = Font.ITALIC;
- } else {
- style = Font.PLAIN;
- }
- font = new Font(fontName, style, 12);
- text.setFont(font );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement