我在项目中使用了几个JSpinners,它们显示小时和分钟。当JSpinner递增或递减时,我必须将值保存到数据库。但是问题是JSpinners给了我旧的价值观。例如-
如果显示的时间是,09:30
并且我将时间增加到10:30
,我将获得09:30作为返回值。我正在使用以下代码
更新的SSCCE
package spinnerupdation;
import java.awt.Container;
import java.awt.FlowLayout;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.text.DateFormatter;
import javax.swing.text.DefaultFormatterFactory;
/**
*
* @author Rohan Kandwal
*/
public class SpinnerUpdation extends JFrame{
public JSpinner spinner;
SpinnerUpdation(){
Container pane=this.getContentPane();
JPanel panel=new JPanel();
panel.setLayout(new FlowLayout());
SpinnerDateModel model=new SpinnerDateModel();
model.setCalendarField(Calendar.HOUR);
spinner=new JSpinner();
spinner.setModel(model);
spinner.setEditor(new JSpinner.DateEditor(spinner,"hh:mm"));
panel.add(spinner);
pane.add(panel);
spinner.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JFormattedTextField tf = ((JSpinner.DefaultEditor) spinner.getEditor()).getTextField();
DefaultFormatterFactory factory = (DefaultFormatterFactory) tf.getFormatterFactory();
DateFormatter formatter = (DateFormatter) factory.getDefaultFormatter();
// Change the date format to only show the hours
formatter.setFormat(new SimpleDateFormat("hh:mm"));
//formatter.setCommitsOnValidEdit(true);
System.out.println(spinner.getValue());
//System.out.println(tf.getText());
}
});
}
public static void main(String[] args) {
SpinnerUpdation ss=new SpinnerUpdation();
ss.setDefaultCloseOperation(ss.EXIT_ON_CLOSE);
ss.setSize(574, 445);
//ss.pack();
ss.setLocationRelativeTo(null);
ss.setResizable(false);
ss.setVisible(true);
}
}
如果我使用的tf.getText()
是旧值两次,但是如果我使用的spinner.getValue
是新值,但它是长格式
Thu Jan 01 10:18:00 IST 1970
Thu Jan 01 11:18:00 IST 1970
我应该如何设置微调框仅给11:18
?
Java
swing使用MVC模式,因此在JSpinner中相同。如果查看JSpinner源代码,您会发现getValue()方法实际上是调用getModel()。getValue(),因此它正在调用模型的getValue。并且您使用的模型是SpinnerDateModel,其值将为Date
Object,当您打印Date对象时,如果要获取,它将显示默认格式,例如“ Thu Jan 01 11:18:00 IST 1970”例如“
11:18”,则需要自行格式化。
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
System.out.println(sdf.format(spinner.getValue()) );
您可能想知道为什么tf.getText()仅获得旧值,因为在微调器上发生ChangeEvent之后,将在tf上发生PropertyChangeEvent,将为其设置新值。当然,您可以像tf.addPropertyChangeListener一样收听tf。但我建议使用上面的解决方案。
功能说明 身份赋予API可以在客户在直播时,指定观众以特定身份观看直播,如将自身平台的观众身份传递到直播页面,让观众获得无缝的体验。 特别说明:如果您选用了此API,那么微信打赏,付费观看等涉及微信的功能将暂不可用 身份赋予逻辑图 接口说明 请求header GET http://{your-domain}/activity.php?a=userAssign 注:请将 {your-domain}
第三方身份赋予功能模块 自定义授权,用户将频道改为自定义授权模式,并设定好自定义地址,访客进入观看页后会先跳转到自定义网址,完成身份赋予后再跳转回来 第三方身份赋予密钥,用户在“媒体中心 ——> 基础配置”栏生成密钥后,用以给传输的数据加密 身份赋予接口,用户调用接口传输密文,完成身份赋予 用户得到带有识别码的Cookie,并跳转到指定网址 第三方身份赋予接口 GET /hubuser/api/a
我得到了下面的Navbar。我想让它做的是: 向下滚动时出现 再次向上滚动时离开视图(到定义的数量) 用箭头“关闭”导航条,使其变小 在“关闭”后“重新打开”导航栏 在任何时候,我仍然希望navbar在滚动到顶部时隐藏。无论它是扩展还是压缩 这不起作用,因为我的切换navbar的代码将为设置内联值,这是类中需要的,以便在向上滚动时隐藏它 所以,除了我的代码有什么问题之外,真正的问题是: 有没有办法
介绍 (Introduction) JSpinner类是一个组件,它允许用户使用输入字段从有序序列中选择数字或对象值。 Class 声明 (Class Declaration) 以下是javax.swing.JSpinner类的声明 - public class JSpinner extends JComponent implements Accessible 类构造函数 (C
只要一个动画,就可以带来生命。不幸的是,当设计师创建图标、logo 和吉祥物的时候,他们交付的通常都是图片或静态的 SVG。所以,虽然 GitHub 的章鱼猫、Twitter 的小鸟以及其它许多 logo 类似于生灵,它们看上去实际上并不是活着的。 Vue 可以帮到你。因为 SVG 的本质是数据,我们只需要这些动物兴奋、思考或警戒的样例。然后 Vue 就可以辅助完成这几种状态之间的过渡动画,来制作
问题内容: 在我的Hibernate应用程序中,我正在使用创建ValueObject类 在我的服务课上,我这样写 在我的DAO课上,我这样写 现在我打电话给createOrUpdateUser(userVO)但它给错误 实际上我的数据库我已经为表创建了一个数据库,以为列生成唯一的ID 是它们的触发器问题。请建议我。 问题答案: ID列不能为null,无论您在数据库驱动程序中执行什么操作,都只会在插