Program Java memformat teks dengan menu JMenuBar JMenu JMenuItem
Program Java Menggunakan JMenuBar, JMenu, JMenuItem
Pin It
Di artikel Mengenal Kelas JMenuBar Di Java, Contoh Program Java Menggunakan Kelas JMenu, Contoh Program Java Menggunakan Kelas JMenuItem, Contoh Program Java Menggunakan Kelas JRadioButtonMenuItem, Contoh Program Java Menggunakan Kelas JCheckBoxMenuItem dan Menggunakan Ikon, Mnemonic Dan Accelerator Di Menu Aplikasi Java, Anda dapat mempelajari cara membuat tipe menu berbeda di program Java. Di artikel kali ini, Anda diberikan contoh program cara menggunakan menu di Java.

Program tersebut terkait dengan pemformatan teks. Anda dapat mengubah warna teks dan latar, memilih jenis dan model huruf serta mengubah teks yang ditampilkan. Di contoh program kali ini, juga memperkenalkan kombinasi penanganan event menggunakan inner class (baca artikel Inner Class Sebagai Obyek Pendengar Aksi (Event Listener Object) Di Java) serta anonymous inner class (baca artikel Anonymous Inner Class Sebagai Obyek Pendengar Event Di Java) sebagai listener. Berikut ini adalah kode program dan hasil eksekusinya:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
// Nama file : TextApplication.java
// Membuat program aplikasi teks sederhana.

// Mengimpor kelas
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

// Deklarasi kelas
public class TextApplication extends JFrame {

   private JLabel label;
   private int style;
   private JCheckBoxMenuItem fontStyle[];
   private JRadioButtonMenuItem fontFace[], foregroundColor[], 
              backgroundColor[];
   private Color backgroundColorValue[] = {Color.YELLOW, Color.WHITE,
              Color.CYAN};
   private Color foregroundColorValue[] = {Color.BLACK, Color.BLUE,
              Color.RED};
   private ButtonGroup groupFontFace, groupForegroundColor,
              groupBackgroundColor; 

   // Konstruktor tanpa argumen
   public TextApplication() {
      label = new JLabel("Pemrograman Java", SwingConstants.CENTER);
      label.setForeground(Color.BLACK);
      label.setFont(new Font("Tahoma", Font.PLAIN, 32));
      getContentPane().setBackground(Color.YELLOW);
      getContentPane().add(label, BorderLayout.CENTER);

      JMenuBar mnuBar = new JMenuBar();
      setJMenuBar(mnuBar);

      JMenu mnuFile = new JMenu("File");
      mnuFile.setMnemonic('F');
      mnuBar.add(mnuFile);

      JMenu mnuFormat = new JMenu("Format");
      mnuFormat.setMnemonic('o');
      mnuBar.add(mnuFormat);

      JMenu mnuHelp = new JMenu("Help");
      mnuHelp.setMnemonic('H');
      mnuBar.add(mnuHelp);

      JMenuItem mnuiNewText = new JMenuItem("New Text");
      mnuiNewText.setMnemonic('T');
      mnuiNewText.setAccelerator(KeyStroke.getKeyStroke
         (KeyEvent.VK_T, ActionEvent.CTRL_MASK));
      mnuFile.add(mnuiNewText);
      mnuiNewText.addActionListener(
         new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
               String newText = JOptionPane.showInputDialog(TextApplication.this,
                                         "Enter a new text", "New Text Dialog Box",
                                        JOptionPane.PLAIN_MESSAGE);
               label.setText((newText == null) ? label.getText() : newText);
            }
         }
      );

      JMenuItem mnuiExit = new JMenuItem("Exit");
      mnuiExit.setMnemonic('E');
      mnuiExit.setAccelerator(KeyStroke.getKeyStroke
         (KeyEvent.VK_E, ActionEvent.CTRL_MASK));
      mnuFile.add(mnuiExit);
      mnuiExit.addActionListener(
         new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
               System.exit(0);
            }
         }
      );

      JMenuItem mnuiAbout = new JMenuItem("About");
      mnuiAbout.setMnemonic('A');
      mnuiAbout.setAccelerator(KeyStroke.getKeyStroke
         (KeyEvent.VK_A, ActionEvent.CTRL_MASK));
      mnuHelp.add(mnuiAbout);
      mnuiAbout.addActionListener(
         new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
               JOptionPane.showMessageDialog(TextApplication.this, 
                  "This simple application is about manipulating text.",
                  "About", JOptionPane.PLAIN_MESSAGE);
            }
         }
      );

      // Font face menu item
      RadioButtonHandler radioButtonHandler = new RadioButtonHandler();
      JMenu mnuFontFace = new JMenu("Font Face");
      mnuFontFace.setMnemonic('c');
      mnuFormat.add(mnuFontFace);

      groupFontFace = new ButtonGroup();
      String fontFaceValue[] = {"Monospaced", "SansSerif", "Tahoma", "Verdana"}; 
      fontFace = new JRadioButtonMenuItem[fontFaceValue.length];
      for (int x = 0; x < fontFace.length; x++) {
         fontFace[x] = new JRadioButtonMenuItem(fontFaceValue[x]);
         mnuFontFace.add(fontFace[x]);
         groupFontFace.add(fontFace[x]);
         fontFace[x].addActionListener(radioButtonHandler);
     }

     fontFace[2].setSelected(true);

     // Font style menu item
     CheckBoxHandler checkBoxHandler = new CheckBoxHandler();
     JMenu mnuFontStyle = new JMenu("Font Style");
     mnuFontStyle.setMnemonic('S');
     mnuFormat.add(mnuFontStyle);
 
     String  fontStyleValue[] = {"Bold", "Italic"};
     fontStyle = new JCheckBoxMenuItem[fontStyleValue.length];
     for (int x = 0; x < fontStyle.length; x++) {
        fontStyle[x] = new JCheckBoxMenuItem(fontStyleValue[x]);
        mnuFontStyle.add(fontStyle[x]);
        fontStyle[x].addItemListener(checkBoxHandler);
     }

     mnuFormat.addSeparator();

     // Foreground color menu item
     JMenu mnuForegroundColor = new JMenu("Foreground Color");
     mnuForegroundColor.setMnemonic('g');
     mnuFormat.add(mnuForegroundColor);

     groupForegroundColor = new ButtonGroup();
     String foregroundColorName[] = {"Black", "Blue", "Red"};
     foregroundColor = new JRadioButtonMenuItem[foregroundColorName.length];
     for (int x = 0; x < foregroundColor.length; x++) {
        foregroundColor[x] = new JRadioButtonMenuItem(foregroundColorName[x]);
        mnuForegroundColor.add(foregroundColor[x]);
        groupForegroundColor.add(foregroundColor[x]);
        foregroundColor[x].addActionListener(radioButtonHandler);
     }

     foregroundColor[0].setSelected(true);

     // Background color menu item
     JMenu mnuBackgroundColor = new JMenu("Background Color");
     mnuBackgroundColor.setMnemonic('B');
     mnuFormat.add(mnuBackgroundColor);

     groupBackgroundColor = new ButtonGroup();
     String backgroundColorName[] = {"Yellow", "White", "Cyan"};
     backgroundColor = new JRadioButtonMenuItem[backgroundColorName.length];
     for (int x = 0; x < backgroundColor.length; x++) {
        backgroundColor[x] = new JRadioButtonMenuItem(backgroundColorName[x]);
        mnuBackgroundColor.add(backgroundColor[x]);
        groupBackgroundColor.add(backgroundColor[x]);
        backgroundColor[x].addActionListener(radioButtonHandler);
     }

     backgroundColor[0].setSelected(true);
  } // Akhir blok konstruktor

  class RadioButtonHandler implements ActionListener {

     public void actionPerformed(ActionEvent ae) {

        for (int y = 0; y < fontFace.length; y++) {
           if (ae.getSource() == fontFace[y]) {
              label.setFont(new Font(fontFace[y].getText(), style, 32));
              break;
           }
        }

        for (int y = 0; y < foregroundColor.length; y++) {
           if (foregroundColor[y].isSelected()) {
              label.setForeground(foregroundColorValue[y]);
              break;
           }
        }

        for (int y = 0; y < backgroundColor.length; y++) {
           if (backgroundColor[y].isSelected()) {
              getContentPane().setBackground(backgroundColorValue[y]);
              break;
           }
        }
    
        repaint();
     }
  }

  class CheckBoxHandler implements ItemListener {

     public void itemStateChanged(ItemEvent ie) {
    
        style = 0;

        if (fontStyle[0].isSelected())
           style += Font.BOLD;

        if (fontStyle[1].isSelected())
           style += Font.ITALIC;
 
        label.setFont(new Font(label.getFont().getName(), style, 32));
        repaint();
     }
  }

  // Metoda main
  public static void main(String[] args) {
     TextApplication frame = new TextApplication();
     frame.setTitle("Kelas TextApplication");
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setSize(375, 200);
     frame.setVisible(true);
  }
}

program Java memformat teks menggunakan menu kelas JMenu

Kode program di atas memiliki hanya satu konstruktor tanpa argument yang digunakan untuk mendesain user interface dan meregistrasi beberapa item menu yang bila dieksekusi akan memicu event. Di dalam kontruktor tersebut, tiga buah menu yaitu File, Format dan Help diletakkan di menu bar.

Menu file mempunyai dua item menu yaitu New Text dan Exit. Menu Format mempunyai empat submenu yaitu Font Face, Font Style, Foreground Color dan Background Color. Submenu Font Face mempunyai empat item menu yang mewakili jenis huruf yaitu Monospaced, SansSerif, Tahoma dan Verdana. Item menu tersebut merupakan obyek (instan) kelas JRadioButtonmenuItem.

Submenu Font Style mempunyai dua obyek item menu dari kelas JCheckBoxMenuItem yaitu Bold dan Italic. Submenu Foreground Color mempunyai tiga obyek item menu dari kelas JRadioButtonMenuItem yaitu Black, Blue dan Red. Submenu Background Color juga mempunyai tiga item menu yaitu Yellow, White dan Cyan yang juga obyek (instan) dari kelas JRadioButtonMenuItem. Menu Help mempunyai satu menu item yaitu About.

Item menu New Text dan About menampilkan kotak dialog ketika dieksekusi. Item menu New Text menampilkan kotak dialog input untuk memasukkan teks baru yang akan ditampilkan dan item menu About menampilkan kotak dialok yang berisi informasi fungsi aplikasi. Kedua kotak dialok tersebut dihasilkan dari pemanggilan metoda static showInputDialog dan showMessageDialog kelas JOptionPane. Berikut ini adalah tampilan kedua kotak dialog ketika item menu New Text dan About dipilih:

Program Java memformat teks dengan menu kelas JMenu Program Java memformat teks dengan menu kelas JMenu

Produk Toko Gerzal

Edifier R1700BT Active 2.0 Bluetooth Bookshelf Speaker Set

Edifier R1700BT Active 2.0 Bluetooth Bookshelf Speaker Set

Beli di Shopee
Sunbuck AV-555BT Audio Amplifier Bluetooth 5.0 Microphone HiFi

Sunbuck AV-555BT Audio Amplifier Bluetooth 5.0 Microphone HiFi

Beli di Shopee
QUEED Power Supply Station Generator 220V 69800mAh

QUEED Power Supply Station Generator 220V 69800mAh

Beli di Shopee
Fosi Audio V3 Power Amplifier 2 Channel Audio Stereo Hi-Fi TI TPA3255

Fosi Audio V3 Power Amplifier 2 Channel Audio Stereo Hi-Fi

Beli di Shopee
Fosi Audio MC101 Mini Bluetooth Stereo Amplifier With VU Meter

Fosi Audio MC101 Mini Bluetooth Stereo Amplifier With VU Meter

Beli di Shopee