Автозаполнение jTextField с NetBeans - PullRequest
0 голосов
/ 09 ноября 2010

Я создал jFrame с помощью NetBeans, который открывается при нажатии кнопки в главном графическом интерфейсе для добавления новой записи. Я хочу знать, есть ли способ предоставить уникальный идентификатор для каждой новой записи, которая показывает, когда отображается форма jFrame. Наряду с уникальным идентификатором я также хочу создать текстовое поле, которое будет автоматически заполнено текущей датой.

1 Ответ

3 голосов
/ 09 ноября 2010

В течение жизни JVM, выполняющей программу, hashCode() может служить уникальным идентификатором; UUID является альтернативой. Пример показывает новый Date каждый раз, когда нажимается кнопка.

Приложение: При ближайшем рассмотрении метод hashCode() для java.util.Date может быть не уникальным. В частности, « не требуется, чтобы, если два объекта были неравны согласно методу equals (java.lang.Object), то вызов метода hashCode для каждого из двух объектов должен давать различное целое Результаты." Вы можете использовать long из getTime() с разрешением в одну миллисекунду.

alt text

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<TestPanel> panels = new ArrayList<TestPanel>();

    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();
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...