名と姓のユーザー入力を受け取り、2 つを組み合わせたウェルカム メッセージを出力するフォームを作成しようとしています。入力内容を 1 つのグリッド パネルにグループ化し、[Go] ボタンとメッセージを表示するテキスト フィールドを別のパネルにグループ化し、BorderLayout を使用して 1 つのフレーム内に両方を入れ子にしたいと考えました。
一般的なレイアウト:
(3x2 グリッド)
First Name: __________________________
Last Name: __________________________
Age: _______________
「GO BUTTON」「Welcome Mark Summers」
教授は、私の問題である 1 つの .java ファイルですべてを望んでいます。私は通常、これらのものを分離してからクラスを拡張し、問題はありません。私がやろうとしているのは、入力パネルと出力パネルをコンストラクターの下に保存してから、メインの下に作成することです
JFrame frame = new JFrame();
その後
add(new CalebBreckonHW3(320,120));
これにより、700x700 JFrame「フレーム」内に 320x120 パネルを配置します。静的コンテキストから非静的メソッド add(java.awt.Component) を参照できないというエラー メッセージが表示されます。メインを非静的に設定できないか、エラーが発生します。
誰かが私を正しい方向に向けることができますか?
import java.awt.*;
import javax.swing.*;
public class CalebBreckonHW3 extends JFrame {
private JButton jbtGreet = new JButton("Greet Me");
private JLabel firstOprLbl = new JLabel("First name");
private JLabel lastOprLbl = new JLabel("Last name");
private JLabel ageOprLbl = new JLabel("Age");
private JTextField jtfFirst = new JTextField(10);
private JTextField jtfLast = new JTextField(15);
private JTextField jtfAge = new JTextField(3);
// I'll get to the action events after I get this down
private JTextField jtfGreet = new JTextField("Welcome firstname, lastname");
public CalebBreckonHW3(int height, int width) {
setLayout(new BorderLayout());
setSize(height, width);
JPanel inputPanel = new JPanel();
inputPanel.setLayout(new GridLayout(3,2,0,5));
jtfGreet.setEditable(false);
inputPanel.add(firstOprLbl);
inputPanel.add(jtfFirst);
inputPanel.add(lastOprLbl);
inputPanel.add(jtfLast);
inputPanel.add(ageOprLbl);
inputPanel.add(jtfAge);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Greeting App");
frame.setSize(700,700);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
add(new CalebBreckonHW3(320,120));
}
}
編集: add ステートメントの前にフレームを追加すると、静的エラーは解消されますが、「コンテナーにウィンドウを追加しています」というエラーが表示されます