栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

更新子JPanel中的组件时如何触发父JPanel中的操作(Java Swing)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

更新子JPanel中的组件时如何触发父JPanel中的操作(Java Swing)

您可以使用PropertyChangeListener,实际上每个组件都内置了一个。例如:

import java.awt.event.*;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import javax.swing.*;@SuppressWarnings("serial")public class Example extends Jframe {   public Example() {      super();      OuterView theGUI = new OuterView();      setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);      setResizable(false);      add(theGUI);      pack();      setVisible(true);   }   public static void main(String[] args) {      SwingUtilities.invokeLater(new Runnable() {         public void run() { new Example();         }      });   }}class OuterView extends JPanel {   private String innerValue = "";   public OuterView() {      super();      InnerView innerPanel = new InnerView();      innerPanel.addPropertyChangeListener(new PropertyChangeListener() {         @Override         public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(InnerView.COMBO_CHANGED)) {    innerValue = evt.getNewValue().toString();    System.out.println("new value from inside of OuterView: "          + innerValue); }         }      });      JButton button = new JButton("display OuterView's model");      button.addActionListener(new ButtonListener());      add(innerPanel);      add(button);   }   private class ButtonListener implements ActionListener {      @Override      public void actionPerformed(ActionEvent ae) {         System.out.println("button was clicked. innerValue: " + innerValue);      }   }}class InnerView extends JPanel {   public static final String COMBO_CHANGED = "Combo Changed";   // private SwingPropertyChangeSupport pcSupport = new   // SwingPropertyChangeSupport(this);   String oldValue = "";   public InnerView() {      super();      String[] items = new String[] { "item 1", "item 2", "item 3" };      JComboBox comboBox = new JComboBox(items);      comboBox.addActionListener(new ComboBoxListener());      add(comboBox);   }   private class ComboBoxListener implements ActionListener {      @Override      public void actionPerformed(ActionEvent ae) {         String text = ((JComboBox) ae.getSource()).getSelectedItem()    .toString();         firePropertyChange(COMBO_CHANGED, oldValue, text);         oldValue = text;         System.out.println("store " + text + " in InnerView's model");      }   }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430804.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号