以下代码中的错误是: 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!");
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句