【问题标题】:Auto filling a JTextField in GUI [duplicate]在 GUI 中自动填充 JTextField [重复]
【发布时间】:2018-11-19 02:02:03
【问题描述】:
我目前正在使用 Java 中的 Netbeans 创建 GUI。当我使用来自另一个框架的JButton 加载包含该文本字段的JFrame 时,如何使JTextField 自动填充以包含当前系统日期?
【问题讨论】:
标签:
java
swing
jbutton
jtextfield
【解决方案1】:
- 假设按下按钮时可以构造(实例化)
JTextField,在构造时用当前日期/时间填充它。
- 查看更适合显示(并允许用户选择)日期的任意数量的组件。例如。
new JSpinner(new SpinnerDateModel()); - 顺便new SpinnerDateModel()默认为当前日期!
这里是使用微调器/微调器日期模型的示例。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class DateSpinner {
private JComponent ui = null;
DateSpinner() {
initUI();
}
public void initUI() {
if (ui!=null) return;
ui = new JPanel(new BorderLayout(4,4));
ui.setBorder(new EmptyBorder(100,100,100,100));
JButton dateSelector = new JButton("Select a date (after now)");
ActionListener dateSelectorListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SpinnerDateModel spinnerDateModel = new SpinnerDateModel();
JSpinner spinner = new JSpinner(spinnerDateModel);
JOptionPane.showMessageDialog(
ui, spinner, "Choose Date", JOptionPane.QUESTION_MESSAGE);
System.out.println("Date Chosen: " + spinnerDateModel.getDate());
}
};
dateSelector.addActionListener(dateSelectorListener);
ui.add(dateSelector);
}
public JComponent getUI() {
return ui;
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception useDefault) {
}
DateSpinner o = new DateSpinner();
JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.setContentPane(o.getUI());
f.pack();
f.setMinimumSize(f.getSize());
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}