gpt4 book ai didi

java - 使用 JSpinner 获取值

转载 作者:行者123 更新时间:2023-11-30 09:13:42 28 4
gpt4 key购买 nike

我正在使用 JSpinner 选择 HH:MM:SS 格式的时间。每当我打开 GUI,微调器自动设置为当前系统时间,我需要说的是,例如,如果我在为微调器赋予一些值(value)后单击保存,以及何时我再次打开它,应该会显示旧值。

我试过下面的代码,但它不起作用,

if(Stime != null){
Date time = new SimpleDateFormat("HHMMSS", Locale.ENGLISH).parse(Stime);
StarttimeSpinner.setValue(time);
}

其中 Stime 是之前以 HHMMSS 格式保存的时间,例如 (142030)

是否正确?或者我该怎么做?请帮忙!

编辑:

    SpinnerModel Startmodel = new SpinnerDateModel();
StarttimeSpinner = new JSpinner();
StarttimeSpinner = new JSpinner(Startmodel);
JComponent editor = new JSpinner.DateEditor(StarttimeSpinner, "HH:mm:ss");
StarttimeSpinner.setEditor(editor);

try{
if(!(Stime.equalsIgnoreCase("")))
{
Date time = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH).parse(Stime);
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateString = formatter.format(time);
StarttimeSpinner.setModel(new SpinnerListModel(new String[]{dateString}));

}
}
}catch(Exception ie){
System.err.println("in time panel");
}

Stime 格式是 HHmmss,它是一个字符串。在 dateString(Variable) 中,我得到了 HH:mm:ss 格式的先前值,但它没有在 Spinner 中设置,而是显示系统时间。

编辑 2:我找到了一个解决方案,但有一个错误,

如果我的代码是这样的(1),

 StarttimeSpinner = new JSpinner();
SpinnerModel Startmodel = new SpinnerDateModel();
StarttimeSpinner = new JSpinner(Startmodel);
JComponent editor = new JSpinner.DateEditor(StarttimeSpinner, "HH:mm:ss");
StarttimeSpinner.setEditor(editor);

下面这段代码工作正常,

Date starttime = new Date();
starttime = (Date)StarttimeSpinner.getValue();

如果我像下面(2)那样更改代码,

Date time = new SimpleDateFormat("HHmmss", Locale.ENGLISH).parse(Stime);
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateString = formatter.format(time);
StarttimeSpinner.setModel(new SpinnerListModel(new String[]{dateString}));

Stime 在哪里(例如)120011

下面的代码不能正常工作,

Date starttime = new Date();
starttime = (Date)StarttimeSpinner.getValue();

并在获取值语句中将异常作为 java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date 抛出。

最佳答案

我并不是 100% 确定您要实现的目标,但看看下面的示例,也许它会对您有所帮助。我使用一个按钮来设置日期,然后使用另一个按钮弹出 JOptionPane,显示从第一次按钮点击保存的上一个日期。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.*;

public class TimeSpinner {

Date date;
JButton setDate = new JButton("Set Date");
JButton showSpinner = new JButton("Show Spinner");
JTextField jtfDate = new JTextField(15);
JSpinner spinner = new JSpinner();
JPanel panel;

public TimeSpinner() {
jtfDate.setEditable(false);

panel = new JPanel(new BorderLayout());
panel.add(setDate, BorderLayout.CENTER);
panel.add(jtfDate, BorderLayout.NORTH);
panel.add(showSpinner, BorderLayout.SOUTH);

setDate.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
date = new Date();
jtfDate.setText(date.toString());
}
});
showSpinner.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if (date != null) {
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
String dateString = formatter.format(date);
spinner.setModel(new SpinnerListModel(new String[]{dateString}));
JOptionPane.showConfirmDialog(null, spinner, "Spinner:"
,JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
}
}
});

JFrame frame = new JFrame("Date Spinner Demo");
frame.add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

}


public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new TimeSpinner();
}
});
}
}

enter image description here

通过以下代码,我能够使用 SpinnerModel

实现此目的
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
String dateString = formatter.format(date);
spinner.setModel(new SpinnerListModel(new String[]{dateString}));

编辑

对于不同的格式,只需更改格式即可。如果你想及时

  • 对于 24 小时制中的小时 "HH:mm:ss"
  • 对于 12 小时模式 "hh:mm:ss a"

关于java - 使用 JSpinner 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20943144/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com