ooメソッドを使用して2つの異なるパネルにラベルを追加しようとしています。しかし、メインクラスでパネルを作成すると、ドライバクラスには表示されません。私は今ooの概念を学び始めました。ドライバクラスのパネルをインスタンス化すると動作しますが、メインクラスでインスタンス化するときには動作しません。これが私の言い方です。2つの別々のパネルにラベルを追加するjavaでクラスを作成するgui、ドライバクラス、メインクラス
メインクラス
import java.awt.BorderLayout;
import javax.swing.JFrame;
public class borderMain {
public static void main(String[] args) {
JFrame frame = new JFrame("Border Layout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
borderpanel p1 = new borderpanel();
borderpanel p2 = new borderpanel();
frame.getContentPane().add(p1, BorderLayout.NORTH);
frame.getContentPane().add(p2, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
}
ドライバクラス - 私はp1.add(lbl1);
を行うと、これは私はあなたが二つのフィールドLBL1とTXT1のgetterを持つことができます
import java.awt.*;
import javax.swing.*;
public class borderpanel extends JPanel {
private JLabel lbl1, lbl2, lbl3;
private JTextField txt1;
public borderpanel(){
lbl1 = new JLabel("Hello");
lbl2 = new JLabel("Hi");
lbl3 = new JLabel("Hey");
txt1 = new JTextField("Hello");
p1.add(lbl1);
p2.add(lbl2);
p1.add(lbl3);
p2.add(txt1);
}
}
'borderpanel'はあなたが使用している' 'JPanel''であるため、' this.add'を 'borderpanel'(ラクラクのクラスではネーミング規則の' Borderpanel'と同じクラス)としたいと思います。 – SomeJavaGuy
明確にしてください。作成した 'JLabel'と' JTextField'オブジェクトをすべて 'borderpanel'の両方のインスタンスに追加しようとしていますか? 'lbl1'と' lbl2'を 'borderpanel'''p1'と' lbl3'と 'txt1'に' borderpanel''p2'を追加します。どちらの場合でも、 'p1'と' p2'はアクセスしようとしているスコープに存在しないので、あなたが今やっていることはうまくいきません。さらに、クラスは 'CamelCase'の中に大文字で始まります。 'BorderPanel'と' BorderMain' –
@ d.j.brown私はlbl1、lbl2をborderpel p1に追加しようとしています。他はp2に追加しようとしています。私はちょうどborderpanel()クラスの中でp1とp2をインスタンス化する必要があります – norskdreamer