Java by API/javax.swing/JComponent

Материал из Java эксперт
Версия от 17:18, 31 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

JComponent: addPropertyChangeListener(PropertyChangeListener listener)

   <source lang="java">
 

import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.Action; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JFrame; class ActionChangedListener implements PropertyChangeListener {

 private JButton button;
 public ActionChangedListener(JButton button) {
   this.button = button;
 }
 public void propertyChange(PropertyChangeEvent e) {
   String propertyName = e.getPropertyName();
   System.out.println(propertyName);
   if (e.getPropertyName().equals(Action.NAME)) {
     String text = (String) e.getNewValue();
     button.setText(text);
     button.repaint();
   } else if (propertyName.equals("enabled")) {
     Boolean enabledState = (Boolean) e.getNewValue();
     button.setEnabled(enabledState.booleanValue());
     button.repaint();
   } else if (e.getPropertyName().equals(Action.SMALL_ICON)) {
     Icon icon = (Icon) e.getNewValue();
     button.setIcon(icon);
     button.invalidate();
     button.repaint();
   }
 }

} public class Main {

 public static void main(String[] a) {
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JButton bn = new JButton();
   bn.addPropertyChangeListener(new ActionChangedListener(bn));
   frame.add(bn);
   bn.setEnabled(false);
   frame.setSize(300, 300);
   frame.setVisible(true);
   frame.add(bn);
 }

}


 </source>
   
  
 
  



JComponent: addVetoableChangeListener(VetoableChangeListener listener)

   <source lang="java">
 

import java.awt.BorderLayout; import java.beans.PropertyChangeEvent; import java.beans.PropertyVetoException; import java.beans.VetoableChangeListener; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; public class MainClass {

 public static void main(final String args[]) {
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JDesktopPane desktop = new JDesktopPane();
   JInternalFrame palette = new JInternalFrame("Palette", true, true, true,
       true);
   
   palette.addVetoableChangeListener(new IconPolice());
   
   palette.setBounds(350, 150, 100, 100);
    desktop.add(palette, JDesktopPane.PALETTE_LAYER);
   palette.setVisible(true);
   
   frame.add(desktop, BorderLayout.CENTER);
   frame.setSize(500, 300);
   frame.setVisible(true);
 }

} class IconPolice implements VetoableChangeListener {

 public void vetoableChange(PropertyChangeEvent ev) throws PropertyVetoException {
   String name = ev.getPropertyName();
   if (name.equals(JInternalFrame.IS_ICON_PROPERTY) && (ev.getNewValue() == Boolean.TRUE)) {
  System.out.println("JInternalFrame.IS_ICON_PROPERTY"); 
   }
 }

}


 </source>
   
  
 
  



JComponent: getAccessibleContext()

   <source lang="java">
 

import java.awt.Dimension; import javax.accessibility.AccessibleContext; import javax.accessibility.AccessibleRelation; import javax.accessibility.AccessibleRelationSet; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class MainClass extends JFrame {

 MainClass() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JPanel p = new JPanel();
   p.setPreferredSize(new Dimension(300, 50));
   JLabel jl = new JLabel("Name:");
   p.add(jl);
   JTextField jtf = new JTextField(20);
   jtf.getAccessibleContext().setAccessibleName("Name-entry");
   p.add(jtf);
   AccessibleRelation ar = new AccessibleRelation("connector", jtf);
   AccessibleContext ac = jl.getAccessibleContext();
   ac.getAccessibleRelationSet().add(ar);
   getContentPane().add(p);
   pack();
   setVisible(true);
 }
 public static void main(String[] args) {
   MainClass ad11 = new MainClass();
   try {
     Thread.sleep(5000);
   } catch (InterruptedException e) {
   }
   ad11.dumpConnectedInfo(ad11.getAccessibleContext());
 }
 void dumpConnectedInfo(AccessibleContext ac) {
   AccessibleRelationSet ars = ac.getAccessibleRelationSet();
   AccessibleRelation ar = null;
   if (ars != null)
     ar = ars.get("connector");
   if (ar != null) {
     Object[] o = ar.getTarget();
     JComponent jc = (JComponent) o[0];
     System.out.println("Label connected to: " + jc.getAccessibleContext().getAccessibleName());
     return;
   }
   int nChildren = ac.getAccessibleChildrenCount();
   for (int i = 0; i < nChildren; i++)
     dumpConnectedInfo(ac.getAccessibleChild(i).getAccessibleContext());
 }

}


 </source>
   
  
 
  



JComponent: getActionMap()

   <source lang="java">
 


import java.awt.ruponent; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) {
   JButton component = new JButton();
   NextFocusAction nextFocusAction = new NextFocusAction();
   component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("SPACE"),
       nextFocusAction.getValue(Action.NAME));
   component.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("F2"),
       nextFocusAction.getValue(Action.NAME));
   component.getActionMap().put(nextFocusAction.getValue(Action.NAME), nextFocusAction);
   
 }

} class NextFocusAction extends AbstractAction {

 public NextFocusAction() {
   super("Move Focus Forwards");
 }
 public void actionPerformed(ActionEvent evt) {
   ((Component) evt.getSource()).transferFocus();
 }

}



 </source>
   
  
 
  



JComponent: getHeight()

   <source lang="java">
 

import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.TitledBorder; public class Main extends JFrame {

 JComponent comp = new JLabel("Test label");
 public Main() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   comp.setToolTipText("Some tooltip text for component");
   comp.setBorder(new TitledBorder("Button"));
   System.out.println("X:" + comp.getX() + " Y:" + comp.getY() + " width:"
       + comp.getWidth() + " height:" + comp.getHeight());
   getContentPane().add(comp);
   pack();
   System.out.println("X:" + comp.getX() + " Y:" + comp.getY() + " width:"
       + comp.getWidth() + " height:" + comp.getHeight());
   setVisible(true);
 }
 public static void main(String arg[]) {
   new Main();
 }

}


 </source>
   
  
 
  



JComponent: getInputMap()

   <source lang="java">
 

import java.awt.Event; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.KeyStroke; import javax.swing.text.DefaultEditorKit; public class MainClass extends JFrame {

 MainClass(String title) {
   super(title);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JPanel jp = new JPanel();
   JLabel jl = new JLabel("Name:");
   jp.add(jl);
   JTextField jt = new JTextField(20);
   jp.add(jt);
   KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_B, Event.CTRL_MASK);
   jt.getInputMap().put(ks, DefaultEditorKit.beepAction);
   getContentPane().add(jp);
   pack();
   setVisible(true);
 }
 public static void main(String[] args) {
   new MainClass("Binding Demo2");
 }

}


 </source>
   
  
 
  



JComponent: getTransferHandler()

   <source lang="java">
 

/**

* Demonstrate various aspects of Swing "data transfer".
* @author Ian Darwin, http://www.darwinsys.ru
* @author Jonathan Fuerth, http://www.SQLPower.ca
*/       

import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.TransferHandler; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class MainClass extends JFrame {

 public static void main(String[] args) {
   new MainClass().setVisible(true);
 }
 private JTextField tf;
 private JLabel l;
 private JComboBox propertyComboBox;
 public MainClass() {
   Container cp = new Box(BoxLayout.X_AXIS);
   setContentPane(cp);
   JPanel firstPanel = new JPanel();
   propertyComboBox = new JComboBox();
   propertyComboBox.addItem("text");
   propertyComboBox.addItem("font");
   propertyComboBox.addItem("background");
   propertyComboBox.addItem("foreground");
   firstPanel.add(propertyComboBox);
   cp.add(firstPanel);
   cp.add(Box.createGlue());
   tf = new JTextField("Hello");
   tf.setForeground(Color.RED);
   tf.setDragEnabled(true);
   cp.add(tf);
   cp.add(Box.createGlue());
   l = new JLabel("Hello");
   l.setBackground(Color.YELLOW);
   cp.add(l);
   cp.add(Box.createGlue());
   JSlider stryder = new JSlider(SwingConstants.VERTICAL);
   stryder.setMinimum(10);
   stryder.setValue(14);
   stryder.setMaximum(72);
   stryder.setMajorTickSpacing(10);
   stryder.setPaintTicks(true);
   cp.add(stryder);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setSize(500, 300);
   setMyTransferHandlers((String) propertyComboBox.getSelectedItem());
   MouseListener myDragListener = new MouseAdapter() {
     public void mousePressed(MouseEvent e) {
       JComponent c = (JComponent) e.getSource();
       TransferHandler handler = c.getTransferHandler();
       handler.exportAsDrag(c, e, TransferHandler.COPY);
     }
   };
   l.addMouseListener(myDragListener);
   propertyComboBox.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ce) {
       JComboBox bx = (JComboBox) ce.getSource();
       String prop = (String) bx.getSelectedItem();
       setMyTransferHandlers(prop);
     }
   });
   tf.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
       JTextField jtf = (JTextField) evt.getSource();
       String fontName = jtf.getText();
       Font font = new Font(fontName, Font.BOLD, 18);
       tf.setFont(font);
     }
   });
   stryder.addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent evt) {
       JSlider sl = (JSlider) evt.getSource();
       Font oldf = tf.getFont();
       Font newf = oldf.deriveFont((float) sl.getValue());
       tf.setFont(newf);
     }
   });
 }
 private void setMyTransferHandlers(String s) {
   TransferHandler th = new TransferHandler(s);
   tf.setTransferHandler(th);
   l.setTransferHandler(th);
 }

}


 </source>
   
  
 
  



JComponent: getWidth()

   <source lang="java">
 

import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.TitledBorder; public class Main extends JFrame {

 JComponent comp = new JLabel("Test label");
 public Main() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   comp.setToolTipText("Some tooltip text for component");
   comp.setBorder(new TitledBorder("Button"));
   System.out.println("X:" + comp.getX() + " Y:" + comp.getY() + " width:"
       + comp.getWidth() + " height:" + comp.getHeight());
   getContentPane().add(comp);
   pack();
   System.out.println("X:" + comp.getX() + " Y:" + comp.getY() + " width:"
       + comp.getWidth() + " height:" + comp.getHeight());
   setVisible(true);
 }
 public static void main(String arg[]) {
   new Main();
 }

}


 </source>
   
  
 
  



JComponent: getX()

   <source lang="java">
 

import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.TitledBorder; public class Main extends JFrame {

 JComponent comp = new JLabel("Test label");
 public Main() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   comp.setToolTipText("Some tooltip text for component");
   comp.setBorder(new TitledBorder("Button"));
   System.out.println("X:" + comp.getX() + " Y:" + comp.getY() + " width:"
       + comp.getWidth() + " height:" + comp.getHeight());
   getContentPane().add(comp);
   pack();
   System.out.println("X:" + comp.getX() + " Y:" + comp.getY() + " width:"
       + comp.getWidth() + " height:" + comp.getHeight());
   setVisible(true);
 }
 public static void main(String arg[]) {
   new Main();
 }

}


 </source>
   
  
 
  



JComponent: getY()

   <source lang="java">
 

import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.TitledBorder; public class Main extends JFrame {

 JComponent comp = new JLabel("Test label");
 public Main() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   comp.setToolTipText("Some tooltip text for component");
   comp.setBorder(new TitledBorder("Button"));
   System.out.println("X:" + comp.getX() + " Y:" + comp.getY() + " width:"
       + comp.getWidth() + " height:" + comp.getHeight());
   getContentPane().add(comp);
   pack();
   System.out.println("X:" + comp.getX() + " Y:" + comp.getY() + " width:"
       + comp.getWidth() + " height:" + comp.getHeight());
   setVisible(true);
 }
 public static void main(String arg[]) {
   new Main();
 }

}


 </source>
   
  
 
  



JComponent: putClientProperty(Object key, Object value)

   <source lang="java">
 

import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JSlider; public class Main {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Tick Slider");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JSlider oneJSlider = new JSlider();
   oneJSlider.putClientProperty("JSlider.isFilled", Boolean.TRUE);
   JSlider anotherJSlider = new JSlider();
   // Set to default setting
   anotherJSlider.putClientProperty("JSlider.isFilled", Boolean.FALSE);
   frame.add(oneJSlider, BorderLayout.NORTH);
   frame.add(anotherJSlider, BorderLayout.SOUTH);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



JComponent: registerKeyboardAction(ActionListener anAction, KeyStroke aKeyStroke, int aCondition)

   <source lang="java">
 

import java.awt.BorderLayout; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JTextField; import javax.swing.KeyStroke; import javax.swing.text.BadLocationException; public class Main {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Popup Example");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   final JPopupMenu popup = new JPopupMenu();
   JMenuItem menuItem1 = new JMenuItem("Option 1");
   popup.add(menuItem1);
   JMenuItem menuItem2 = new JMenuItem("Option 2");
   popup.add(menuItem2);
   final JTextField textField = new JTextField();
   frame.add(textField, BorderLayout.NORTH);
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent actionEvent) {
       try {
         int dotPosition = textField.getCaretPosition();
         Rectangle popupLocation = textField.modelToView(dotPosition);
         popup.show(textField, popupLocation.x, popupLocation.y);
       } catch (BadLocationException badLocationException) {
         System.err.println("Oops");
       }
     }
   };
   KeyStroke keystroke = KeyStroke.getKeyStroke(KeyEvent.VK_PERIOD, 0, false);
   textField.registerKeyboardAction(actionListener, keystroke, JComponent.WHEN_FOCUSED);
   frame.add(new JLabel("Press "." to activate Popup menu"), BorderLayout.SOUTH);
   frame.setSize(250, 150);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



JComponent: requestFocusInWindow()

   <source lang="java">
 

import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.EventListener; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.event.EventListenerList; public class MainClass {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Key Text Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   KeyTextComponent keyTextComponent = new KeyTextComponent();
   final JTextField textField = new JTextField();
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent actionEvent) {
       String keyText = actionEvent.getActionCommand();
       textField.setText(keyText);
     }
   };
   keyTextComponent.addActionListener(actionListener);
   frame.add(keyTextComponent, BorderLayout.CENTER);
   frame.add(textField, BorderLayout.SOUTH);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

} class KeyTextComponent extends JComponent {

 private EventListenerList actionListenerList = new EventListenerList();
 public KeyTextComponent() {
   setBackground(Color.CYAN);
   KeyListener internalKeyListener = new KeyAdapter() {
     public void keyPressed(KeyEvent keyEvent) {
       if (actionListenerList != null) {
         int keyCode = keyEvent.getKeyCode();
         String keyText = KeyEvent.getKeyText(keyCode);
         ActionEvent actionEvent = new ActionEvent(this,
             ActionEvent.ACTION_PERFORMED, keyText);
         fireActionPerformed(actionEvent);
       }
     }
   };
   MouseListener internalMouseListener = new MouseAdapter() {
     public void mousePressed(MouseEvent mouseEvent) {
       requestFocusInWindow();
     }
   };
   addKeyListener(internalKeyListener);
   addMouseListener(internalMouseListener);
 }
 public void addActionListener(ActionListener actionListener) {
   actionListenerList.add(ActionListener.class, actionListener);
 }
 public void removeActionListener(ActionListener actionListener) {
   actionListenerList.remove(ActionListener.class, actionListener);
 }
 protected void fireActionPerformed(ActionEvent actionEvent) {
   EventListener listenerList[] = actionListenerList
       .getListeners(ActionListener.class);
   for (int i = 0, n = listenerList.length; i < n; i++) {
     ((ActionListener) listenerList[i]).actionPerformed(actionEvent);
   }
 }
 public boolean isFocusable() {
   return true;
 }

}


 </source>
   
  
 
  



JComponent: revalidate()

   <source lang="java">
 

import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class MainClass extends JFrame {

 public MainClass() {
   super("Revalidation Demo");
   setSize(300, 150);
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   Font font = new Font("Dialog", Font.PLAIN, 10);
   final JButton b = new JButton("Add");
   b.setFont(font);
   Container c = getContentPane();
   c.setLayout(new FlowLayout());
   c.add(b);
   b.addActionListener(new ActionListener() {
     int size = 10;
     public void actionPerformed(ActionEvent ev) {
       b.setFont(new Font("Dialog", Font.PLAIN, ++size));
       b.revalidate();
     }
   });
 }
 public static void main(String[] args) {
   MainClass re = new MainClass();
   re.setVisible(true);
 }

}


 </source>
   
  
 
  



JComponent: setComponentPopupMenu(JPopupMenu popup)

   <source lang="java">
 

import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; class MyPopupMenuListener implements PopupMenuListener {

 public void popupMenuCanceled(PopupMenuEvent popupMenuEvent) {
   System.out.println("Canceled");
 }
 public void popupMenuWillBecomeInvisible(PopupMenuEvent popupMenuEvent) {
   System.out.println("Becoming Invisible");
 }
 public void popupMenuWillBecomeVisible(PopupMenuEvent popupMenuEvent) {
   System.out.println("Becoming Visible");
 }

} public class Main {

 public static void main(final String args[]) {
   JFrame frame = new JFrame("Example");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JPopupMenu popupMenu = new JPopupMenu("Title");
   PopupMenuListener popupMenuListener = new MyPopupMenuListener();
   popupMenu.addPopupMenuListener(popupMenuListener);
   JMenuItem cutMenuItem = new JMenuItem("Cut");
   popupMenu.add(cutMenuItem);
   JMenuItem copyMenuItem = new JMenuItem("Copy");
   popupMenu.add(copyMenuItem);

   JMenuItem pasteMenuItem = new JMenuItem("Paste");
   pasteMenuItem.setEnabled(false);
   popupMenu.add(pasteMenuItem);
   popupMenu.addSeparator();
   JMenuItem findMenuItem = new JMenuItem("Find");
   popupMenu.add(findMenuItem);
   JButton label = new JButton();
   frame.add(label);
   label.setComponentPopupMenu(popupMenu);
   frame.setSize(350, 250);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



JComponent: setFocusTraversalKeys(int arg0, Set<? extends AWTKeyStroke> arg1)

   <source lang="java">
 

import java.awt.AWTKeyStroke; import java.awt.KeyboardFocusManager; import java.util.HashSet; import java.util.Set; import javax.swing.JButton; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   JButton component = new JButton("a");
   Set<AWTKeyStroke> set = new HashSet<AWTKeyStroke>(component
       .getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
   set.add(KeyStroke.getKeyStroke("F2"));
   component.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set);
 }

}


 </source>
   
  
 
  



JComponent: setFont(Font font)

   <source lang="java">
 

import java.awt.BorderLayout; import java.awt.Font; import javax.swing.JButton; import javax.swing.JFrame; public class Main {

 public static void main(String args[]) {
   JFrame f = new JFrame("JColorChooser Sample");
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   final JButton button = new JButton("Pick to Change Background");
   Font myFont = new Font("Serif", Font.ITALIC | Font.BOLD, 12);
   button.setFont(myFont);
   f.add(button, BorderLayout.CENTER);
   f.setSize(300, 200);
   f.setVisible(true);
 }

}


 </source>
   
  
 
  



JComponent: setInputMap(int condition, InputMap map)

   <source lang="java">
 

import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.KeyStroke; public class Main {

 public static void main(String[] argv) throws Exception {
   InputMap inputMap = new InputMap();
   inputMap.put(KeyStroke.getKeyStroke("F2"), "actionName");
   JButton component = new JButton("button");
   
   inputMap.setParent(component.getInputMap(JComponent.WHEN_FOCUSED));
   component.setInputMap(JComponent.WHEN_FOCUSED, inputMap);
 }

}


 </source>
   
  
 
  



JComponent: setInputVerifier(InputVerifier inputVerifier)

   <source lang="java">
 
      

import java.awt.BorderLayout; import java.awt.Container; import javax.swing.InputVerifier; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; public class Main {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Verifier Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTextField textField1 = new JTextField();
   JTextField textField2 = new JTextField();
   JTextField textField3 = new JTextField();
   InputVerifier verifier = new InputVerifier() {
     public boolean verify(JComponent comp) {
       boolean returnValue;
       JTextField textField = (JTextField) comp;
       try {
         Integer.parseInt(textField.getText());
         returnValue = true;
       } catch (NumberFormatException e) {
         returnValue = false;
       }
       return returnValue;
     }
   };
   textField1.setInputVerifier(verifier);
   textField3.setInputVerifier(verifier);
   Container contentPane = frame.getContentPane();
   contentPane.add(textField1, BorderLayout.NORTH);
   contentPane.add(textField2, BorderLayout.CENTER);
   contentPane.add(textField3, BorderLayout.SOUTH);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



JComponent: setOpaque(boolean isOpaque)

   <source lang="java">
 

import java.awt.Color; import java.awt.FlowLayout; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class MainClass extends JFrame {

 public MainClass() {
   super("Opaque JPanel Demo");
   setSize(400, 200);
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   JPanel opaque = createNested(true);
   JPanel notOpaque = createNested(false);
   getContentPane().setLayout(new FlowLayout());
   getContentPane().add(opaque);
   getContentPane().add(notOpaque);
 }
 public static void main(String[] args) {
   MainClass oe = new MainClass();
   oe.setVisible(true);
 }
 public JPanel createNested(boolean opaque) {
   JPanel outer = new JPanel(new FlowLayout());
   JPanel inner = new JPanel(new FlowLayout());
   outer.setBackground(Color.white);
   inner.setBackground(Color.black);
   inner.setOpaque(opaque);
   inner.setBorder(BorderFactory.createLineBorder(Color.gray));
   inner.add(new JButton("Button"));
   outer.add(inner);
   return outer;
 }

}


 </source>
   
  
 
  



JComponent: setTransferHandler(TransferHandler newHandler)

   <source lang="java">
 
      

/**

* Demonstrate various aspects of Swing "data transfer".
* @author Ian Darwin, http://www.darwinsys.ru
* @author Jonathan Fuerth, http://www.SQLPower.ca
*/       

import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.TransferHandler; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class MainClass extends JFrame {

 public static void main(String[] args) {
   new MainClass().setVisible(true);
 }
 private JTextField tf;
 private JLabel l;
 private JComboBox propertyComboBox;
 public MainClass() {
   Container cp = new Box(BoxLayout.X_AXIS);
   setContentPane(cp);
   JPanel firstPanel = new JPanel();
   propertyComboBox = new JComboBox();
   propertyComboBox.addItem("text");
   propertyComboBox.addItem("font");
   propertyComboBox.addItem("background");
   propertyComboBox.addItem("foreground");
   firstPanel.add(propertyComboBox);
   cp.add(firstPanel);
   cp.add(Box.createGlue());
   tf = new JTextField("Hello");
   tf.setForeground(Color.RED);
   tf.setDragEnabled(true);
   cp.add(tf);
   cp.add(Box.createGlue());
   l = new JLabel("Hello");
   l.setBackground(Color.YELLOW);
   cp.add(l);
   cp.add(Box.createGlue());
   JSlider stryder = new JSlider(SwingConstants.VERTICAL);
   stryder.setMinimum(10);
   stryder.setValue(14);
   stryder.setMaximum(72);
   stryder.setMajorTickSpacing(10);
   stryder.setPaintTicks(true);
   cp.add(stryder);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setSize(500, 300);
   setMyTransferHandlers((String) propertyComboBox.getSelectedItem());
   MouseListener myDragListener = new MouseAdapter() {
     public void mousePressed(MouseEvent e) {
       JComponent c = (JComponent) e.getSource();
       TransferHandler handler = c.getTransferHandler();
       handler.exportAsDrag(c, e, TransferHandler.COPY);
     }
   };
   l.addMouseListener(myDragListener);
   propertyComboBox.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ce) {
       JComboBox bx = (JComboBox) ce.getSource();
       String prop = (String) bx.getSelectedItem();
       setMyTransferHandlers(prop);
     }
   });
   tf.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
       JTextField jtf = (JTextField) evt.getSource();
       String fontName = jtf.getText();
       Font font = new Font(fontName, Font.BOLD, 18);
       tf.setFont(font);
     }
   });
   stryder.addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent evt) {
       JSlider sl = (JSlider) evt.getSource();
       Font oldf = tf.getFont();
       Font newf = oldf.deriveFont((float) sl.getValue());
       tf.setFont(newf);
     }
   });
 }
 private void setMyTransferHandlers(String s) {
   TransferHandler th = new TransferHandler(s);
   tf.setTransferHandler(th);
   l.setTransferHandler(th);
 }

}


 </source>
   
  
 
  



JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT

   <source lang="java">
 

import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.KeyStroke; public class MainClass {

 public static void main(String args[]) {
   String ACTION_KEY = "The Action";
   
   JFrame frame = new JFrame("KeyStroke Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JButton buttonA = new JButton("FOCUSED (control alt 7)");
   JButton buttonB = new JButton("FOCUS/RELEASE (VK_ENTER)");
   JButton buttonC = new JButton("ANCESTOR  (VK_F4+SHIFT_MASK)");
   JButton buttonD = new JButton("WINDOW (" ")");
   Action actionListener = new AbstractAction() {
     public void actionPerformed(ActionEvent actionEvent) {
       JButton source = (JButton) actionEvent.getSource();
       System.out.println("Activated: " + source.getText());
     }
   };
   KeyStroke controlAlt7 = KeyStroke.getKeyStroke("control alt 7");
   InputMap inputMap = buttonA.getInputMap();
   inputMap.put(controlAlt7, ACTION_KEY);
   ActionMap actionMap = buttonA.getActionMap();
   actionMap.put(ACTION_KEY, actionListener);
   KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true);
   inputMap = buttonB.getInputMap();
   inputMap.put(enter, ACTION_KEY);
   buttonB.setActionMap(actionMap);
   KeyStroke shiftF4 = KeyStroke.getKeyStroke(KeyEvent.VK_F4,
       InputEvent.SHIFT_MASK);
   inputMap = buttonC
       .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
   inputMap.put(shiftF4, ACTION_KEY);
   buttonC.setActionMap(actionMap);
   KeyStroke space = KeyStroke.getKeyStroke(" ");
   inputMap = buttonD.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
   inputMap.put(space, ACTION_KEY);
   buttonD.setActionMap(actionMap);
   frame.setLayout(new GridLayout(2, 2));
   frame.add(buttonA);
   frame.add(buttonB);
   frame.add(buttonC);
   frame.add(buttonD);
   frame.setSize(400, 200);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



JComponent.WHEN_IN_FOCUSED_WINDOW

   <source lang="java">
 

import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.KeyStroke; public class MainClass {

 public static void main(String args[]) {
   String ACTION_KEY = "The Action";
   
   JFrame frame = new JFrame("KeyStroke Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JButton buttonA = new JButton("FOCUSED (control alt 7)");
   JButton buttonB = new JButton("FOCUS/RELEASE (VK_ENTER)");
   JButton buttonC = new JButton("ANCESTOR  (VK_F4+SHIFT_MASK)");
   JButton buttonD = new JButton("WINDOW (" ")");
   Action actionListener = new AbstractAction() {
     public void actionPerformed(ActionEvent actionEvent) {
       JButton source = (JButton) actionEvent.getSource();
       System.out.println("Activated: " + source.getText());
     }
   };
   KeyStroke controlAlt7 = KeyStroke.getKeyStroke("control alt 7");
   InputMap inputMap = buttonA.getInputMap();
   inputMap.put(controlAlt7, ACTION_KEY);
   ActionMap actionMap = buttonA.getActionMap();
   actionMap.put(ACTION_KEY, actionListener);
   KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true);
   inputMap = buttonB.getInputMap();
   inputMap.put(enter, ACTION_KEY);
   buttonB.setActionMap(actionMap);
   KeyStroke shiftF4 = KeyStroke.getKeyStroke(KeyEvent.VK_F4,
       InputEvent.SHIFT_MASK);
   inputMap = buttonC
       .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
   inputMap.put(shiftF4, ACTION_KEY);
   buttonC.setActionMap(actionMap);
   KeyStroke space = KeyStroke.getKeyStroke(" ");
   inputMap = buttonD.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
   inputMap.put(space, ACTION_KEY);
   buttonD.setActionMap(actionMap);
   frame.setLayout(new GridLayout(2, 2));
   frame.add(buttonA);
   frame.add(buttonB);
   frame.add(buttonC);
   frame.add(buttonD);
   frame.setSize(400, 200);
   frame.setVisible(true);
 }

}


 </source>