Tag: propertychangelistener

从内部类中获取事件,扩展SwingWorker

我试图从内部类中触发事件,但它不起作用。 这是我的代码: 摘要型号: public abstract class AbstractModel { public PropertyChangeSupport propertyChangeSupport; public AbstractModel() { propertyChangeSupport = new PropertyChangeSupport(this); } public void addPropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener(listener); } protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue); } } 模型: public class GUImodel extends AbstractModel { // […]

不知道如何在JFormattedTextField上修复我的PropertyChangeListener

编辑结束后 测试代码和输出 import java.awt.EventQueue; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.text.NumberFormat; import javax.swing.JFormattedTextField; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.text.NumberFormatter; public class Test{ private JFormattedTextField input, input2; private NumberFormatter formatter; private PropertyChangeListener listener; public Test(){ formatter = new NumberFormatter(NumberFormat.getNumberInstance()); input = new JFormattedTextField(formatter); input2 = new JFormattedTextField(formatter); listener = new PropertyChangeListener(){ @Override public void propertyChange(PropertyChangeEvent evt) { […]

JavaFX TabPane:如何监听选择更改

当用户从一个选项卡转到另一个选项卡时,我想做一些操作,因为我用Scene Builder进行了表单设计我不能使用这里提到的代码(他使用了TabPaneBuilder类) 我猜这个代码可以工作,但它不会对选项卡选择更改做出反应。 @FXML protected TabPane chatTabs; . . . chatTabs.selectionModelProperty().addListener( new ChangeListener<SingleSelectionModel> { @Override public void changed(ObservableValue<? extends SingleSelectionModel> ov, SingleSelectionModel t, SingleSelectionModel t1) { System.err.println(“changed”); } } } );

如何避免在Swing中耦合View和Controller

我最近遇到了一个试图在Swing中实现模型 – 视图 – 控制器的问题。 我有一个由子面板组成的GUI类,这些子面板由其他子面板组成。 现在,在其中一个子子面板中有一个JButton。 在这个JButton的ActionListener中,我想在控制器中调用一个方法。 为了做到这一点,我需要将控制器深入GUI的内部传递到JButton所在的子子面板。 然后在这个子子面板中,我需要将一个ActionListener附加到JButton,并通过调用我想在控制器中调用的方法来填充actionPerformed()。 我相信你们都看到了这个问题。 是否有任何好方法可以避免将控制器深入到GUI的内部。 我唯一的想法是让控制器成为一个单独的东西,将它与视图分离,但我听说单身人士通常是邪恶的。 关于这个问题的任何建议都将非常感激。 提前致谢!

Java Swing – 编写一个Ui,它将根据对自定义数据对象的更改重新绘制自身

首先要做的事情 – 我之前发过一个问题,其中我曾要求帮助解释为什么我的代码不能正常工作,而这个问题是根据我在该问题中得到的建议行事。 我的用例就是这个。 我正在编写一个MethodEditor模块,其中每个Method都由一个有2个数据成员的自定义数据对象表示 – 输入变量名称列表 String(此方法设置的结果变量的名称)。 这些Method对象是在JDialog上填写一些数据的结果。 这些Method对象存储在一个容器中,该容器有一个数据成员,它是List容器驻留在一个控制器JPanel ,调用上述JDialog 。 从UI的角度来看,我想以Jbutton的forms显示每个Method对象,点击其中JDialog将打开并允许用户编辑它。 MethodEditor作用于List并为List每个Method生成一个MethodEditor的垂直排列,1。 该List从前面提到的控制器JPane传递给JPane 。 我在之前的问题中将MethodEditor实现为JPanel ,它将PropertyChangeListener添加到List并且每次有PropertyChange事件时都会自行repaint但我的方法不起作用,重绘不会发生。 有没有其他方法来实现我的用例,或者我可以对我之前的问题中发布的代码做什么修复?

JProgressBar不会在setProgress上触发propertyChange

我已经阅读了许多关于JProgressBar的不同文章……包括在Java上找到的狡猾的代码; 这里。 大多数人表示你需要一个SwingWorker才能正常发生事情,这很有道理,我理解的很多。 我发现当我调用setProgress(value)来更新进度条时,它并不会在大多数情况下触发propertyChange事件。 我已经检查了我传递给setProgess的值,它肯定每次都会改变,所以我不确定它是否只是过快地触发事件? 请参阅下面的相关代码,非常感谢任何帮助/解释。 class ProgBar extends SwingWorker { public ProgBar() { addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if (“progress”.equals(evt.getPropertyName())) { int value = (Integer)evt.getNewValue(); System.out.println(“propertyChange called with: ” + value); loginProg.setValue(value); } } }); loginProg.setStringPainted(true); loginProg.setValue(0); setProgress(0); } @Override public Void doInBackground() throws InterruptedException { … int count = […]

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

我正在尝试在Java Swing中构建一个MVC应用程序。 我有一个包含四个JComboBox的JPanel,这个JPanel嵌入到父JPanel中。 除了子JPanel之外,父JPanel还有其他控件。 每当我更改JComboBoxes的值时,子JPanel的模型都会正确更新(它基本上是一个日期选择器,每个日期,月份,月份和一小时都有一个combobox)。 我无法弄清楚的是,无论何时更改其中一个JComboBox,我都可以触发父JPanel的模型更新自身以匹配存储在子JPanel模型中的值。 下面是我所掌握的结构的简化SSCCE。 谢谢。 import java.awt.event.*; import javax.swing.*; 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 […]