Java Tutorial/Swing Event/ChangeListener

Материал из Java эксперт
Перейти к: навигация, поиск

Get value of BoundedRangeModel in its change listener

   <source lang="java">

import java.awt.BorderLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BoundedRangeModel; import javax.swing.JFrame; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main extends JFrame {

 JSlider slider = new JSlider();
 BoundedRangeModel model = slider.getModel();
 public Main() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   getContentPane().add(slider, BorderLayout.CENTER);
   model.addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent e) {
       System.out.println("Value: " + model.getValue());
     }
   });
   pack();
   setVisible(true);
 }
 public static void main(String arg[]) {
   new Main();
 }

}</source>





Listening to JMenu Events with a ChangeListener: register a ChangeListener with a JMenu

   <source lang="java">

import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class ContructMenuWithAction {

 public static void main(final String args[]) {
   JFrame frame = new JFrame("MenuSample Example");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JMenuBar menuBar = new JMenuBar();
   // File Menu, F - Mnemonic
   JMenu fileMenu = new JMenu("File");
   fileMenu.setMnemonic(KeyEvent.VK_F);
   menuBar.add(fileMenu);
   fileMenu.addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent e) {
       System.out.println("File Menu Changed");
     }
   });
   // File->New, N - Mnemonic
   JMenuItem newMenuItem = new JMenuItem("New");
   fileMenu.add(newMenuItem);
   newMenuItem.addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent e) {
       System.out.println("new menu item changed");
     }
   });
   frame.setJMenuBar(menuBar);
   frame.setSize(350, 250);
   frame.setVisible(true);
 }

}</source>





Registers a change listener on a slider that controls animation speed. The change listener ignores the change events until the user releases the slider.

   <source lang="java">

import javax.swing.JFrame; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class RegisterChangeListenerToJSlider {

 public static void main(String[] a) {
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JSlider framesPerSecond = new JSlider(JSlider.HORIZONTAL, 10, 100, 20);
   framesPerSecond.addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent e) {
       JSlider source = (JSlider) e.getSource();
       if (!source.getValueIsAdjusting()) {
         int fps = (int) source.getValue();
         System.out.println(fps);
       }
     }
   });
   frame.add(framesPerSecond,"North");
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>





Tab change listener

   <source lang="java">

import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Test extends JFrame {

 JTabbedPane tabs = new JTabbedPane();
 public Test() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JPanel p = new JPanel();
   p.add(new JButton("Button on Tab 0"));
   tabs.addTab("Tab 0", p);
   p = new JPanel();
   p.add(new JTextField("Text on Tab 1"));
   tabs.addTab("Tab 1", p);
   tabs.addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent e) {
       System.out.println("Tab=" + tabs.getSelectedIndex());
     }
   });
   getContentPane().add(tabs, "Center");
   pack();
 }
 public static void main(String[] args) {
   new Test().setVisible(true);
 }

}</source>





Uses a change listener on a date-field spinner to change the color of the text as the spinner"s date changes.

   <source lang="java">

import javax.swing.JFrame; import javax.swing.JSpinner; import javax.swing.SpinnerModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class AddingChangeListenerToJSpinner {

 public static void main(String[] a) {
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   final JSpinner dateSpinner = new JSpinner();
   dateSpinner.addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent e) {
       SpinnerModel dateModel = dateSpinner.getModel();
       System.out.println(dateModel.getValue());
     }
   });
   frame.add(dateSpinner,"North");
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>





Uses a change listener on the selection model of a color chooser to learn when the user changes the current color.

   <source lang="java">

import java.awt.Color; import javax.swing.JColorChooser; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class AddingChangeListenerToJColorChooser {

 public static void main(String[] a) {
   final JColorChooser tcc = new JColorChooser();
   tcc.getSelectionModel().addChangeListener(new ChangeListener() {
     public void stateChanged(ChangeEvent e) {
       System.out.println(tcc.getColor());
     }
   });
  tcc.showDialog(null,"title",Color.RED);
 }

}</source>