猿问

请问getPropertyName()方法究竟有多少种取值?或者告知一下这些值是在哪里定义的?

以下是一段在进度条中显示进度百分比的代码
public void propertyChange(PropertyChangeEvent evt) {
if ("progress" == evt.getPropertyName()) {
int value = (Integer) evt.getNewValue();
progressBar.setIndeterminate(false);
progressBar.setValue(value);
}
}
我想问的是,if ("progress" == evt.getPropertyName()) 这一句中,"progress"这个字符串是怎么来的?我还看到过"state" == evt.getPropertyName()、"done" == evt.getPropertyName()这样的语句,"state"、"done"这样的字符串又是怎么来的?

千巷猫影
浏览 228回答 2
2回答

杨魅力

package com;import javax.swing.SwingUtilities;import java.awt.BorderLayout;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JProgressBar;import java.awt.Rectangle;public class T extends JFrame {private static final long serialVersionUID = 1L;private JPanel jContentPane = null;private JProgressBar jProgressBar = null;private JProgressBar getJProgressBar() {if (jProgressBar == null) {jProgressBar = new JProgressBar();jProgressBar.setBounds(new Rectangle(47, 94, 201, 19));jProgressBar.addPropertyChangeListener("name",new java.beans.PropertyChangeListener() {public void propertyChange(java.beans.PropertyChangeEvent e) {System.out.println("asd:"+e.getPropertyName()); }});jProgressBar.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent e) {jProgressBar.setName("asdf");}});}return jProgressBar;}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {T thisClass = new T();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}public T() {super();initialize();}private void initialize() {this.setSize(300, 200);this.setContentPane(getJContentPane());this.setTitle("JFrame");}private JPanel getJContentPane() {if (jContentPane == null) {jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.add(getJProgressBar(), null);}return jContentPane;}}用户鼠标点击进度条,看一下后台的输出就知道了。其实可以设置的值包含在附件图中,即一种事件监听一种属性的变化

LEATH

package com;import javax.swing.SwingUtilities;import java.awt.BorderLayout;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JProgressBar;import java.awt.Rectangle;public class T extends JFrame {private static final long serialVersionUID = 1L;private JPanel jContentPane = null;private JProgressBar jProgressBar = null;private JProgressBar getJProgressBar() {if (jProgressBar == null) {jProgressBar = new JProgressBar();jProgressBar.setBounds(new Rectangle(47, 94, 201, 19));jProgressBar.addPropertyChangeListener("name",new java.beans.PropertyChangeListener() {public void propertyChange(java.beans.PropertyChangeEvent e) {System.out.println("asd:"+e.getPropertyName());}});jProgressBar.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent e) {jProgressBar.setName("asdf");}});}return jProgressBar;}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {T thisClass = new T();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}public T() {super();initialize();}private void initialize() {this.setSize(300, 200);this.setContentPane(getJContentPane());this.setTitle("JFrame");}private JPanel getJContentPane() {if (jContentPane == null) {jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.add(getJProgressBar(), null);}return jContentPane;}}用户鼠标点击进度条,看一下后台的输出就知道了。其实可以设置的值包含在附件图中,即一种事件监听一种属性的变化
随时随地看视频慕课网APP
我要回答