import java.awt.*; import java.awt.event.AWTEventListener; import java.awt.event.KeyEvent;import javax.swing.*;public class ContextHelpTest { private static JFrame helpFrame; private static JTextArea helpTextArea; public static void main(String[] args) { Toolkit.getDefaultToolkit().addAWTEventListener( new AWTEventListener() { public void eventDispatched(AWTEvent event) { KeyEvent ke = (KeyEvent) event; if (ke.getID() == KeyEvent.KEY_PRESSED && ke.getKeyCode() == KeyEvent.VK_F1) { showHelpInfo(ke.getComponent()); } } }, AWTEvent.KEY_EVENT_MASK); JPanel p = new JPanel(); p.add(new JButton("Btn-1")).setName("Button-1"); p.add(new JButton("Btn-2")).setName("Button-2"); p.add(new JButton("Btn-3")).setName("Button-3"); p.add(new JTextField(10)).setName("TextField-1"); p.add(new JTextField(10)).setName("TextField-2"); p.add(new JTextField(10)).setName("TextField-3"); JFrame f = new JFrame("HelpTest"); f.getContentPane().add(p, BorderLayout.CENTER); f.pack(); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } private static void showHelpInfo(Component component) { if (component == null) { component = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); }
if (component == null) { helpTextArea.setText(""); return; } if (helpFrame == null) { helpFrame = new JFrame("Help"); helpTextArea = new JTextArea(10, 20); JScrollPane sp = new JScrollPane(helpTextArea); helpFrame.getContentPane().add(sp, BorderLayout.CENTER); helpFrame.pack(); helpFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }
Window w = SwingUtilities.getWindowAncestor(component); if (w == helpFrame) { return; } String compName = component.getName(); if (compName != null) { helpTextArea.setText("Context help of component" + compName); } else { helpTextArea.setText("Context help of component" + component); }
全记住?系统没有实现的方法吗?谢谢。
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;import javax.swing.*;public class ContextHelpTest {
private static JFrame helpFrame;
private static JTextArea helpTextArea; public static void main(String[] args) {
Toolkit.getDefaultToolkit().addAWTEventListener(
new AWTEventListener() {
public void eventDispatched(AWTEvent event) {
KeyEvent ke = (KeyEvent) event;
if (ke.getID() == KeyEvent.KEY_PRESSED && ke.getKeyCode() == KeyEvent.VK_F1) {
showHelpInfo(ke.getComponent());
}
}
},
AWTEvent.KEY_EVENT_MASK); JPanel p = new JPanel();
p.add(new JButton("Btn-1")).setName("Button-1");
p.add(new JButton("Btn-2")).setName("Button-2");
p.add(new JButton("Btn-3")).setName("Button-3");
p.add(new JTextField(10)).setName("TextField-1");
p.add(new JTextField(10)).setName("TextField-2");
p.add(new JTextField(10)).setName("TextField-3"); JFrame f = new JFrame("HelpTest");
f.getContentPane().add(p, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
} private static void showHelpInfo(Component component) {
if (component == null) {
component = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
}
if (component == null) {
helpTextArea.setText("");
return;
} if (helpFrame == null) {
helpFrame = new JFrame("Help");
helpTextArea = new JTextArea(10, 20);
JScrollPane sp = new JScrollPane(helpTextArea);
helpFrame.getContentPane().add(sp, BorderLayout.CENTER);
helpFrame.pack();
helpFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
Window w = SwingUtilities.getWindowAncestor(component);
if (w == helpFrame) {
return;
} String compName = component.getName();
if (compName != null) {
helpTextArea.setText("Context help of component" + compName);
}
else {
helpTextArea.setText("Context help of component" + component);
}
helpFrame.setLocation(w.getX() + w.getWidth(), w.getY());
helpFrame.setVisible(true);
helpFrame.toFront();
}
}