[解決済み] エラー: java.lang.IllegalArgumentException
2022-03-11 22:24:15
質問
以下のコードでエラーが発生します。
java.lang.IllegalArgumentException: adding container's parent to itself.
このようなコードです。
public class humev extends JFrame implements ActionListener{
//Dichiarazione variabili e costanti
private static final int larghezza = 1300;
private static final int altezza = 1000;
private static final String nome = "Human Evolution";
private JLabel lab;
private JButton gioca;
private JPanel pang;
public humev(){
try{
pang = new JPanel();
gioca = new JButton("Gioca!");
gioca.addActionListener(this);
lab = new JLabel();
gioca.add(gioca);
lab.add(lab);
pang.setLayout(null);
}
catch(Exception e1){
System.err.println(e1);
System.err.println("Impossibile caricare il frame di gioco!");
}
}
public static void main(String[] args) {
//Finestra
try{
humev h = new humev();
JFrame finestra = new JFrame(nome);
Dimension dim_finestra = new Dimension(larghezza, altezza);
finestra.setPreferredSize(dim_finestra);
finestra.setMaximumSize(dim_finestra);
finestra.setResizable(false);
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
finestra.pack();
finestra.setVisible(true);
}
catch(Exception e2){
System.err.println(e2);
System.err.println("Impossibile caricare la finestra. Frame non caricato");
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == gioca){
lab.setText("Gioco avviato con successo!");
}
}
}
解決方法は?
この例を実行してみてください。あなたのコードには問題がたくさんあります。
コンポーネントを自分自身に追加している
gioca.add(gioca); // don't do this
レイアウトを使用する。NULLは使用しない
pang.setLayout(null); // don't do this .use layouts .and even if you use null then
//use bounds to absolutely position .if you use null layout and if you add using `.add()`
//then you will not see those components .
完全なコード
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class humev extends JFrame implements ActionListener {
private static final int larghezza = 1300;
private static final int altezza = 1000;
private static final String nome = "Human Evolution";
private final JLabel lab;
private final JButton gioca;
private final JPanel pang;
public humev() {
super(nome);
pang = new JPanel();
//pang.setLayout(new FlowLayout()); // use appropriate layout .for example flowlayout.since flowlayout is default layout for jpanel you can avoid it.but don't use null
gioca = new JButton("Gioca!");
gioca.addActionListener(this);
lab = new JLabel("lable");
pang.add(gioca);
pang.add(lab);
add(pang); // add pang panel to frame
Dimension dim_finestra = new Dimension(larghezza, altezza);
setPreferredSize(dim_finestra);
setMaximumSize(dim_finestra);
//setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
pack();
}
public static void main(String[] args) {
humev humev = new humev();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == gioca) {
lab.setText("Gioco avviato con successo!");
}
}
}
関連
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] Javaでのスキャナが動作しない
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] IntegerからBigIntegerへの変換
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] 文字列が一意な文字であるかどうかを判定する