「Java/swing/サンプル/メニュー、タイトルバー、ステータスバー、ツールバーの表示on off切り替えサンプル」の編集履歴(バックアップ)一覧はこちら

Java/swing/サンプル/メニュー、タイトルバー、ステータスバー、ツールバーの表示on off切り替えサンプル」(2022/09/18 (日) 10:17:51) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

メニュー、タイトルバー、ステータスバー、ツールバーの表示切り替えを、「ショートカットキー」「メニュー」「ツールバー」から行うサンプルです。 * ■目次 #contents(fromhere=true) * サンプルソース &ref(MenuOnOfSample.java) #highlight(){{ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.BevelBorder; /** * メニューの表示・非表示サンプル * Ctrl + A : メニューの表示切り替え * Ctrl + B : タイトルバー * Ctrl + C : ステータスバー * Ctrl + D : ツールバー * ショートカットキーとメニュー、ツールバーからそれぞれ切り替えサンプル */ public class MenuOnOfSample extends JFrame { // メニュー JMenuBar menuBar = new JMenuBar(); // ステータスバー JPanel statusBar = new JPanel(); // ツールバー JToolBar toolBar = new JToolBar(); public static void main(String[] args) { new MenuOnOfSample(); } public MenuOnOfSample() { initUI(); } /** * ユーザーインターフェース作成 */ private void initUI() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("メニューの表示切り替え"); setBounds(100, 100, 300, 200); // メニュー作成 createMenu(); // ステータスバー作成 createStatusBar(); // ツールバー作成 createToolBar(); // ショートカットキーのためにリスナー追加 addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { doKeyEvent(e); } }); // テキストエリア追加 JTextArea textArea = new JTextArea(); // テキストエリアにもキーボードイベントを処理するようにリスナーを追加します // これを入れないとテキストエリアにフォーカスがある時に、表示切り替えができません textArea.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { doKeyEvent(e); } }); add(textArea, BorderLayout.CENTER); setVisible(true); } /** * ステータスバー作成 */ private void createStatusBar() { statusBar.setBorder(new BevelBorder(BevelBorder.LOWERED)); statusBar.setPreferredSize(new Dimension(this.getWidth(), 16)); statusBar.setLayout(new BoxLayout(statusBar, BoxLayout.X_AXIS)); JLabel label = new JLabel("status bar"); statusBar.add(label); add(statusBar, BorderLayout.SOUTH); } /** * メニュー作成 */ private void createMenu() { // メニュー作成 JMenu menu = new JMenu("表示(M)"); // メニューアイテム作成 JMenuItem item1 = new JMenuItem("メニューの表示切り替え(A)"); JMenuItem item2 = new JMenuItem("タイトルバーの表示切り替え(B)"); JMenuItem item3 = new JMenuItem("ステータスバーの表示切り替え(C)"); JMenuItem item4 = new JMenuItem("ツールバーの表示切り替え(D)"); // メニューアイテムにアクションリスナー追加 item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchMenuBar(); } }); item2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchTitleBar(); } }); item3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchStatusBar(); } }); item4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchToolBar(); } }); // メニューにメニューアイテム追加 menu.add(item1); menu.add(item2); menu.add(item3); menu.add(item4); // メニューバーにメニューを追加 menuBar.add(menu); // フレームにメニューバーを追加 setJMenuBar(menuBar); } /** * ツールバー作成 */ public void createToolBar() { // ボタン作成 JButton button1 = new JButton("M"); JButton button2 = new JButton("Ti"); JButton button3 = new JButton("S"); JButton button4 = new JButton("To"); // ボタンにアクションリスナー追加 button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchMenuBar(); } }); button2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchTitleBar(); } }); button3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchStatusBar(); } }); button4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchToolBar(); } }); // ツールチップ設定 button1.setToolTipText("メニューの表示/非表示を切り替えます。"); button2.setToolTipText("タイトルバーの表示/非表示を切り替えます。"); button3.setToolTipText("ステータスバーの表示/非表示を切り替えます。"); button4.setToolTipText("ツールバーの表示/非表示を切り替えます。"); // ツールバーにボタン追加 toolBar.add(button1); toolBar.add(button2); toolBar.add(button3); toolBar.add(button4); // 画面下部にツールバー追加 add(toolBar, BorderLayout.NORTH); } /** * キーイベント * * @param e */ public void doKeyEvent(KeyEvent e) { if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0) { // Ctrl + A 判定 if (e.getKeyCode() == KeyEvent.VK_A) { // メニューバー表示切り替え switchMenuBar(); } // Ctrl + B 判定 if (e.getKeyCode() == KeyEvent.VK_B) { // タイトルバー表示切り替え switchTitleBar(); } // Ctrl + C 判定 if (e.getKeyCode() == KeyEvent.VK_C) { // ステータスバー表示切り替え switchStatusBar(); } // Ctrl + D 判定 if (e.getKeyCode() == KeyEvent.VK_D) { // ツールバー表示切り替え switchToolBar(); } } } /** * メニューバー表示切り替え */ public void switchMenuBar() { menuBar.setVisible(!menuBar.isVisible()); } /** * ステータスバー表示切り替え */ public void switchStatusBar() { statusBar.setVisible(!statusBar.isVisible()); } /** * タイトルバー表示切り替え */ public void switchTitleBar() { dispose(); setUndecorated(!isUndecorated()); setVisible(true); } /** * ツールバー表示切り替え */ public void switchToolBar() { toolBar.setVisible(!toolBar.isVisible()); } } }} * ポイント解説 ** メニュー、ステータスバー、ツールバーの表示切り替え >menuBar.setVisible(!menuBar.isVisible()); >statusBar.setVisible(!statusBar.isVisible()); >toolBar.setVisible(!toolBar.isVisible()); - 上記のコードは呼び出される度に、表示/非表示を切り替えます。 --「isVisible」に!を付けて「setVisible」することで、呼び出す度に簡単に表示/非表示が切り替わるのです。 ** タイトルバーの表示切り替え >dispose(); >setUndecorated(!isUndecorated()); >setVisible(true); - タイトルバーの表示切り替えには「setUndecorated」を使います。 -- メニューの表示切り替えと同じく、「isUndecorated」に!を付けて切り替えています。 -「setUndecorated」はフレームが表示されていない時に呼び出す必要があるので、事前に「dispose」でリソースを破棄します。 -- 「setUndecorated」が終わったら、「setVisible(true)」でフレームを再表示しています。 ** キーボードショートカット - メニューアイテムに「setAccelerator」でショートカットキーを設定することも出来るのですが、この場合メニューを非表示にするとショートカットキーが効かなくなります。 - 今回のサンプルはメニューの表示切り替えなので、自力でキーボードショートカットを処理しています。 #highlight(){{ if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0) { // Ctrl + A 判定 if (e.getKeyCode() == KeyEvent.VK_A) { // メニューバー表示切り替え switchMenuBar(); } }} - 上記のサンプルは、まず「if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0)」でCtrlキーの同時押しを判定しています。 -- Altキーなら「InputEvent.ALT_DOWN_MASK」、Shiftキーなら「InputEvent.SHIFT_DOWN_MASK」で判定できます。 - 次に「if (e.getKeyCode() == KeyEvent.VK_A)」で「A」が押されているか判定しています。 ** テキストエリアでショートカットキーを押した時の処理 #highlight(){{ textArea.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { doKeyEvent(e); } }); }} - JFrameにショートカットキーのリスナーを追加しても、JTextArea等のコンポーネントにフォーカスが行くと、JFrameのリスナーまでイベントが届かず、ショートカットキーを押しても何も起きなくなってしまいます。 - そんなコンポーネントを追加した時は、それぞれのコンポーネントに「addKeyListener」でリスナーを追加してあげましょう。 * コメント(バグ、間違い、こんな情報が欲しい等ありましたら) #pcomment(reply) * アンケート(このページの情報はお役に立ちましたか?) #tvote("役に立った[5]","役に立たない[2]","分かりにくい[2]","間違っている[1]")
メニュー、タイトルバー、ステータスバー、ツールバーの表示切り替えを、「ショートカットキー」「メニュー」「ツールバー」から行うサンプルです。 * ■目次 #contents(fromhere=true) * サンプルソース &ref(MenuOnOfSample.java) #highlight(){{ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.BevelBorder; /** * メニューの表示・非表示サンプル * Ctrl + A : メニューの表示切り替え * Ctrl + B : タイトルバー * Ctrl + C : ステータスバー * Ctrl + D : ツールバー * ショートカットキーとメニュー、ツールバーからそれぞれ切り替えサンプル */ public class MenuOnOfSample extends JFrame { // メニュー JMenuBar menuBar = new JMenuBar(); // ステータスバー JPanel statusBar = new JPanel(); // ツールバー JToolBar toolBar = new JToolBar(); public static void main(String[] args) { new MenuOnOfSample(); } public MenuOnOfSample() { initUI(); } /** * ユーザーインターフェース作成 */ private void initUI() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("メニューの表示切り替え"); setBounds(100, 100, 300, 200); // メニュー作成 createMenu(); // ステータスバー作成 createStatusBar(); // ツールバー作成 createToolBar(); // ショートカットキーのためにリスナー追加 addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { doKeyEvent(e); } }); // テキストエリア追加 JTextArea textArea = new JTextArea(); // テキストエリアにもキーボードイベントを処理するようにリスナーを追加します // これを入れないとテキストエリアにフォーカスがある時に、表示切り替えができません textArea.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { doKeyEvent(e); } }); add(textArea, BorderLayout.CENTER); setVisible(true); } /** * ステータスバー作成 */ private void createStatusBar() { statusBar.setBorder(new BevelBorder(BevelBorder.LOWERED)); statusBar.setPreferredSize(new Dimension(this.getWidth(), 16)); statusBar.setLayout(new BoxLayout(statusBar, BoxLayout.X_AXIS)); JLabel label = new JLabel("status bar"); statusBar.add(label); add(statusBar, BorderLayout.SOUTH); } /** * メニュー作成 */ private void createMenu() { // メニュー作成 JMenu menu = new JMenu("表示(M)"); // メニューアイテム作成 JMenuItem item1 = new JMenuItem("メニューの表示切り替え(A)"); JMenuItem item2 = new JMenuItem("タイトルバーの表示切り替え(B)"); JMenuItem item3 = new JMenuItem("ステータスバーの表示切り替え(C)"); JMenuItem item4 = new JMenuItem("ツールバーの表示切り替え(D)"); // メニューアイテムにアクションリスナー追加 item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchMenuBar(); } }); item2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchTitleBar(); } }); item3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchStatusBar(); } }); item4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchToolBar(); } }); // メニューにメニューアイテム追加 menu.add(item1); menu.add(item2); menu.add(item3); menu.add(item4); // メニューバーにメニューを追加 menuBar.add(menu); // フレームにメニューバーを追加 setJMenuBar(menuBar); } /** * ツールバー作成 */ public void createToolBar() { // ボタン作成 JButton button1 = new JButton("M"); JButton button2 = new JButton("Ti"); JButton button3 = new JButton("S"); JButton button4 = new JButton("To"); // ボタンにアクションリスナー追加 button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchMenuBar(); } }); button2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchTitleBar(); } }); button3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchStatusBar(); } }); button4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switchToolBar(); } }); // ツールチップ設定 button1.setToolTipText("メニューの表示/非表示を切り替えます。"); button2.setToolTipText("タイトルバーの表示/非表示を切り替えます。"); button3.setToolTipText("ステータスバーの表示/非表示を切り替えます。"); button4.setToolTipText("ツールバーの表示/非表示を切り替えます。"); // ツールバーにボタン追加 toolBar.add(button1); toolBar.add(button2); toolBar.add(button3); toolBar.add(button4); // 画面下部にツールバー追加 add(toolBar, BorderLayout.NORTH); } /** * キーイベント * * @param e */ public void doKeyEvent(KeyEvent e) { if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0) { // Ctrl + A 判定 if (e.getKeyCode() == KeyEvent.VK_A) { // メニューバー表示切り替え switchMenuBar(); } // Ctrl + B 判定 if (e.getKeyCode() == KeyEvent.VK_B) { // タイトルバー表示切り替え switchTitleBar(); } // Ctrl + C 判定 if (e.getKeyCode() == KeyEvent.VK_C) { // ステータスバー表示切り替え switchStatusBar(); } // Ctrl + D 判定 if (e.getKeyCode() == KeyEvent.VK_D) { // ツールバー表示切り替え switchToolBar(); } } } /** * メニューバー表示切り替え */ public void switchMenuBar() { menuBar.setVisible(!menuBar.isVisible()); } /** * ステータスバー表示切り替え */ public void switchStatusBar() { statusBar.setVisible(!statusBar.isVisible()); } /** * タイトルバー表示切り替え */ public void switchTitleBar() { dispose(); setUndecorated(!isUndecorated()); setVisible(true); } /** * ツールバー表示切り替え */ public void switchToolBar() { toolBar.setVisible(!toolBar.isVisible()); } } }} * ポイント解説 ** メニュー、ステータスバー、ツールバーの表示切り替え >menuBar.setVisible(!menuBar.isVisible()); >statusBar.setVisible(!statusBar.isVisible()); >toolBar.setVisible(!toolBar.isVisible()); - 上記のコードは呼び出される度に、表示/非表示を切り替えます。 --「isVisible」に!を付けて「setVisible」することで、呼び出す度に簡単に表示/非表示が切り替わるのです。 ** タイトルバーの表示切り替え >dispose(); >setUndecorated(!isUndecorated()); >setVisible(true); - タイトルバーの表示切り替えには「setUndecorated」を使います。 -- メニューの表示切り替えと同じく、「isUndecorated」に!を付けて切り替えています。 -「setUndecorated」はフレームが表示されていない時に呼び出す必要があるので、事前に「dispose」でリソースを破棄します。 -- 「setUndecorated」が終わったら、「setVisible(true)」でフレームを再表示しています。 ** キーボードショートカット - メニューアイテムに「setAccelerator」でショートカットキーを設定することも出来るのですが、この場合メニューを非表示にするとショートカットキーが効かなくなります。 - 今回のサンプルはメニューの表示切り替えなので、自力でキーボードショートカットを処理しています。 #highlight(){{ if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0) { // Ctrl + A 判定 if (e.getKeyCode() == KeyEvent.VK_A) { // メニューバー表示切り替え switchMenuBar(); } }} - 上記のサンプルは、まず「if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0)」でCtrlキーの同時押しを判定しています。 -- Altキーなら「InputEvent.ALT_DOWN_MASK」、Shiftキーなら「InputEvent.SHIFT_DOWN_MASK」で判定できます。 - 次に「if (e.getKeyCode() == KeyEvent.VK_A)」で「A」が押されているか判定しています。 ** テキストエリアでショートカットキーを押した時の処理 #highlight(){{ textArea.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { doKeyEvent(e); } }); }} - JFrameにショートカットキーのリスナーを追加しても、JTextArea等のコンポーネントにフォーカスが行くと、JFrameのリスナーまでイベントが届かず、ショートカットキーを押しても何も起きなくなってしまいます。 - そんなコンポーネントを追加した時は、それぞれのコンポーネントに「addKeyListener」でリスナーを追加してあげましょう。 * コメント(バグ、間違い、こんな情報が欲しい等ありましたら) #pcomment(reply) * アンケート(このページの情報はお役に立ちましたか?) #tvote("役に立った[6]","役に立たない[2]","分かりにくい[2]","間違っている[1]")

表示オプション

横に並べて表示:
変化行の前後のみ表示: