使用NetBeans自动填充jTextField

我使用NetBeans创建了一个jFrame,当单击主GUI上的按钮添加新条目时,该框架会打开。 我想知道是否有办法为显示jFrame表单时显示的每个新条目提供唯一的ID。 除了唯一的ID,我还想要一个自动填充当前日期的文本字段createdOn。

对于执行程序的JVM的生命周期, hashCode()可以作为唯一ID; UUID是另一种选择。 每次按下按钮时,该示例都会显示一个新Date

附录:仔细研究一下, java.util.DatehashCode()方法可能不是唯一的。 特别是,“如果两个对象根据equals(java.lang.Object)方法不相等,则不需要在两个对象中的每个对象上调用hashCode方法必须产生不同的整数结果。” 您可能能够使用getTime()long ,受制于1毫秒的分辨率。

替代文字

 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; /** @see http://stackoverflow.com/questions/4128432 */ public class AddTest extends JPanel { private static final DateFormat format = new SimpleDateFormat("yyyy-MMM-dd hh:mm:ss.SSS"); private final List panels = new ArrayList(); public AddTest() { this.setLayout(new GridLayout(0, 1)); TestPanel tp = new TestPanel(); panels.add(tp); this.add(tp); this.validate(); Dimension d = tp.getPreferredSize(); this.setPreferredSize(new Dimension(d.width, d.height * 8)); } private static class TestPanel extends JPanel { public TestPanel() { Date date = new Date(); this.add(new JLabel(String.valueOf(date.hashCode()))); this.add(new JTextField(format.format(date))); } } private void display() { JFrame f = new JFrame("AddTest"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this, BorderLayout.CENTER); JButton button = new JButton(new AbstractAction("New") { @Override public void actionPerformed(ActionEvent e) { TestPanel tp = new TestPanel(); panels.add(tp); AddTest.this.add(tp); AddTest.this.revalidate(); AddTest.this.repaint(); // may be required } }); f.add(button, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new AddTest().display(); } }); } }