0

私は Java の初心者で、大きなシステムの最初のステップを作成したいと考えています。私はこのタスクに Eclipse WindowsBuilder を使用しようとしていましたが、理解できないコードがたくさんあり、さらに、どのように進めればよいかわかりません...

やりたいことはシンプル。プログラムを実行すると、小さなウィンドウ (フレーム?) に「ユーザー名」というラベルとその横にテキスト フィールドが表示され、その下に別のラベル「パスワード」とその横にパスワード フィールドが表示されます。その下には、「送信」ボタンが必要です。このボタンを押すと、このウィンドウ/フレームが閉じられ、新しいウィンドウ/フレームが大きく開き、そこにあらゆる種類のものを入れます。これは私のコードです。最初のウィンドウが作成されます。ボタンを押したときに必要な動作をさせる方法がわかりません。さらに、メイン メソッドなしで新しいフレームの新しいクラスを作成する方法がわかりませんが、うまくいきますか?

提供できるあらゆる種類のヘルプとガイダンスに感謝します(より良い方法がある場合、またはwindowsbuilderなしで書く場合-私はそれを支持します)。

package HR;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Frame;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import com.jgoodies.forms.factories.FormFactory;

import javax.swing.JLabel;
import javax.swing.JFormattedTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class SignIn extends JFrame {

    private JPanel contentPane;
    private JPasswordField passwordField;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    SignIn frame = new SignIn();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public SignIn() {
        setTitle("SYSTEM");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 308, 179);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new FormLayout(new ColumnSpec[] {
                FormFactory.RELATED_GAP_COLSPEC,
                FormFactory.DEFAULT_COLSPEC,
                FormFactory.RELATED_GAP_COLSPEC,
                FormFactory.DEFAULT_COLSPEC,
                FormFactory.RELATED_GAP_COLSPEC,
                FormFactory.DEFAULT_COLSPEC,
                FormFactory.RELATED_GAP_COLSPEC,
                ColumnSpec.decode("default:grow"),},
            new RowSpec[] {
                FormFactory.RELATED_GAP_ROWSPEC,
                FormFactory.DEFAULT_ROWSPEC,
                FormFactory.RELATED_GAP_ROWSPEC,
                FormFactory.DEFAULT_ROWSPEC,
                FormFactory.RELATED_GAP_ROWSPEC,
                FormFactory.DEFAULT_ROWSPEC,
                FormFactory.RELATED_GAP_ROWSPEC,
                FormFactory.DEFAULT_ROWSPEC,}));

        JLabel lblNewLabel = new JLabel("User Name");
        contentPane.add(lblNewLabel, "4, 4, right, default");

        final JFormattedTextField username = new JFormattedTextField();
        contentPane.add(username, "6, 4, 3, 1, fill, default");

        JLabel lblNewLabel_1 = new JLabel("Password");
        contentPane.add(lblNewLabel_1, "4, 6, right, default");

        passwordField = new JPasswordField();
        contentPane.add(passwordField, "6, 6, 3, 1, fill, default");

        JButton btnSignIn = new JButton("Sign In");
        btnSignIn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) 
            {
                username.setText("Me");
            }
        });
        contentPane.add(btnSignIn, "6, 8");
    }

}
4

2 に答える 2

0
   public void actionPerformed(ActionEvent arg0) 
    {
        dispose();              
        JFrame newFrame = new JFrame("newJFrame");    
        newFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        newFrame.add(new JPanel());     
        newFrame.setSize(200,200);     //set this to any size you wish             
        newFrame.setVisible(true);             
    }

新しい JPanel を JPanel を拡張するクラスに置き換えるだけで、ボタンのリスナーが処理します。ではごきげんよう!

于 2014-02-11T12:33:33.300 に答える
0

新しいウィンドウを作成する適切な場所はここです

        public void actionPerformed(ActionEvent arg0) 
        {

        }

あなたはこのようにすることができます

        public void actionPerformed(ActionEvent arg0) 
        {
            dispose();                //close old frame
            JFrame f = new JFrame("test");    //creat new frame
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            f.add(new JPanel());      //add new panel
            f.setVisible(true);       //make it visible
            f.setSize(768,1024);      //set the size
        }

new JPanel() をクラス extends jpanel に置き換えるだけです。そうです、クラスに main メソッドは必要ありません。すべてのイベントは、ボタンなどのリスナーによってトリガーされます。

于 2014-02-11T12:16:10.743 に答える