Java Q&A



Help tips в Swing - часть 2


Код, который создает adapterы для элементов меню достаточно прост:

new MenuHelpTextAdapter( item1, " Help text for item 1", statusBar);

new MenuHelpTextAdapter( item2, "Item 2 info", statusBar);

Используя этот adapter, как внутренний класс в данном случае, мы можем создать полную программу:

import java.awt.event.*; import java.awt.*; import javax.swing.*; import javax.swing.event.*;

public class StatusBarTest { JLabel statusBar; JMenuItem item1; JMenuItem item2;

private void init() { JFrame frame = new JFrame("Status Bar Test");

JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); JMenu fileMenu = new JMenu("File"); menuBar.add(fileMenu);

item1 = new JMenuItem("Item 1"); item2 = new JMenuItem("Item 2");

fileMenu.add(item1); fileMenu.add(item2);

Container contentPane = frame.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add( "Center", new JButton( "Main application area"));

statusBar = new JLabel(" ");

contentPane.add("South", statusBar);

new MenuHelpTextAdapter( item1, "Help text for item 1", statusBar); new MenuHelpTextAdapter( item2, "Item 2 info", statusBar);

frame.setSize(400,400); frame.setVisible(true); }

public static void main(String[] args) { StatusBarTest t = new StatusBarTest(); t.init(); }

class MenuHelpTextAdapter implements ChangeListener { private JMenuItem menuItem; private String helpText; private JLabel statusBar;

public MenuHelpTextAdapter( JMenuItem menuItem, String helpText, JLabel statusBar) { this.menuItem = menuItem; this.helpText = helpText; this.statusBar = statusBar; menuItem.addChangeListener(this); }

public void stateChanged (ChangeEvent evt) { if (menuItem.isArmed()) statusBar.setText(helpText); else statusBar.setText(" "); } } }




Содержание  Назад