如何嵌入我的秒表

时间:2014-04-07 10:42:50

标签: java swing netbeans timer gui-builder

我已经通过netbeans用Java创建了一个程序,在现有的项目中我想添加一个秒表。我在java中有以下秒表代码,但是我无法确定在程序中嵌入这个代码的方法:

//All the imports were written here (I deleted them to make the code clear)   


public class NewJFrame extends javax.swing.JFrame {

Toolkit toolkit;
Timer timer;


public NewJFrame() {


    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
            }

            JFrame frame = new JFrame("Testing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BorderLayout());
            frame.add(new TestPane());
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    });

}


public class TestPane extends JPanel {

    private JTextField field;
    private JButton button;
    private int tick; 
    private Timer timer;

    public TestPane() {

        field = new JTextField(10);
        field.setEditable(false);
        button = new JButton("Start");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                button.setEnabled(false);
                tick = 0;
                timer.start();
            }
        });

        timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                field.setText(Integer.toString(++tick));
                if (tick > 4) {
                    timer.stop();
                    button.setEnabled(true);
                }
            }
        });
        timer.setInitialDelay(0);

        setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        add(field, gbc);
        add(button, gbc);

    }
}




/**
 * Creates new form NewJFrame
 */


/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 400, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 300, Short.MAX_VALUE)
    );

    pack();
}// </editor-fold>                        

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /*
     * Set the Nimbus look and feel
     */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /*
     * If Nimbus (introduced in Java SE 6) is not available, stay with the
     * default look and feel. For details see
     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /*
     * Create and display the form
     */


    System.out.format("About to schedule task.%n");
    new NewJFrame();
System.out.format("Task scheduled.%n");



    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new NewJFrame().setVisible(true);
        }
    });
}
// Variables declaration - do not modify                     
// End of variables declaration                   
}

我无法弄清楚什么是TestPane,如何在没有Testpane的情况下做到这一点,因为在上面的代码中,gui元素是用java代码编写的,但是在我想要嵌入它的程序中,我使用了netbeans GUI构建器来完成所有GUI元素的制作。 那么我该如何嵌入呢?

1 个答案:

答案 0 :(得分:2)

由于您使用的是Netbeans GUI Builder,因此嵌入秒表的最简单方法是创建一个JPanel表单并将计时器代码放在那里。您还可以使用方法来启动,停止,重置该类中的时钟。然后,您可以将JPanel从包浏览器拖到JFrame,如图here