1

私は非常に単純な個人的なプロジェクトに取り組んでいますが、これはより大きなプロジェクトの一部です。どんな助けでも大歓迎です。これは私のコードで、出力が間違っています。実行すると、1 つの大きなウィンドウと、時間を表示する 1 つの小さなウィンドウが表示されます。正しい方法は、JLabel の大きなフレームに時間を表示することです。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
//package Employees;

import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class DateShowAPII extends javax.swing.JFrame {

/**
 * Creates new form DateShowAPI
 */
public DateShowAPII() {
    initComponents();
}

/**
 * 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() {

    JLabel = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jLabel2.setText("Time");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(104, 104, 104)
            .addComponent(jLabel2)
            .addGap(28, 28, 28)
            .addComponent(JLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(179, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,    layout.createSequentialGroup()
            .addContainerGap(139, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addComponent(JLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel2))
            .addGap(132, 132, 132))
    );

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

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {

    JFrame frame = new JFrame();

    String date = new SimpleDateFormat("hh:mm:ss").format(new Date());
    JLabel l = new JLabel(date);

    frame.getContentPane().add(l);

    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

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

        public void run() {
            new DateShowAPII().setVisible(true);
        }
    });
}
// Variables declaration - do not modify
private javax.swing.JLabel JLabel;
private javax.swing.JLabel jLabel2;
// End of variables declaration
}
4

2 に答える 2

2

DateShowAPIIはフレーム (大きいフレーム) であり、主に別のフレームを作成 (およびパック) します。これは、時間とともに小さいフレームです。

代わりに、別のフレームを作成せずに、作成した新しいフレームに JLabel を追加してDateShowAPIIください。

于 2012-04-20T20:31:28.483 に答える
2

1) 2つ宣言したJFrames

DateShowAPII は javax.swing.JFrame を拡張します

JFrame フレーム = 新しい JFrame();

同じ内容のように見えます

2)スイングタイマーを使用し、スイングアクションから発砲するJLabel#setText(date)

3) 予約済みの Java メソッド名を変数またはクラス名として使用しないでください。つまり、

JLabel = new javax.swing.JLabel();

に名前を変更

myJLabel = new javax.swing.JLabel();
于 2012-04-20T20:34:14.723 に答える