Java 为什么赢了';我的身体里没有任何东西出现吗?
我试着将组件添加到框架中,但它也有同样的问题。所以我创建了一个类和一个面板,我正在尝试这样做。但现在我有同样的问题。我的所有按钮都不显示在框架内。我也得到了一个非法的辩论例外。(此代码现在起作用)我所做的更改如下所示Java 为什么赢了';我的身体里没有任何东西出现吗?,java,swing,Java,Swing,我试着将组件添加到框架中,但它也有同样的问题。所以我创建了一个类和一个面板,我正在尝试这样做。但现在我有同样的问题。我的所有按钮都不显示在框架内。我也得到了一个非法的辩论例外。(此代码现在起作用)我所做的更改如下所示 import java.awt.*; import javax.swing.*; public class Pan extends JFrame { public Pan(){ setLayout(new GridLayout(1,1)); JPanel pan
import java.awt.*;
import javax.swing.*;
public class Pan extends JFrame {
public Pan(){
setLayout(new GridLayout(1,1));
JPanel panel1 = new JPanel(new GridLayout(4,3));
JButton zero = new JButton(""+0);
JButton one = new JButton(""+1);
JButton two = new JButton(""+2);
JButton three = new JButton(""+3);
JButton four = new JButton(""+4);
JButton five = new JButton(""+5);
JButton six = new JButton(""+6);
JButton seven = new JButton(""+7);
JButton eight = new JButton(""+8);
JButton nine = new JButton(""+9);
panel1.add(zero);
panel1.add(one);
panel1.add(two);
panel1.add(three);
panel1.add(four);
panel1.add(five);
panel1.add(six);
panel1.add(seven);
panel1.add(eight);
panel1.add(nine);
add(panel1);
}
public static void main(String[] args){
Pan frame = new Pan();
frame.setSize(800, 800);
frame.setLocationRelativeTo(null);
frame.setTitle("Number Pad");
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
}}
正如ZouZou指出的,void Pan()不是构造函数,因此不会被调用。此外,您可能希望将面板添加到框架的根窗格中 请尝试以下代码:
import java.awt.*;
import javax.swing.*;
public class Pan extends JFrame {
public Pan(){
JPanel panel = new JPanel(new GridLayout(4,3));
JButton zero = new JButton(""+0);
JButton one = new JButton(""+1);
JButton two = new JButton(""+2);
JButton three = new JButton(""+3);
JButton four = new JButton(""+4);
JButton five = new JButton(""+5);
JButton six = new JButton(""+6);
JButton seven = new JButton(""+7);
JButton eight = new JButton(""+8);
JButton nine = new JButton(""+9);
panel.add(zero);
panel.add(one);
panel.add(two);
panel.add(three);
panel.add(four);
panel.add(five);
panel.add(six);
panel.add(seven);
panel.add(eight);
panel.add(nine);
add(panel);
}
public static void main(String[] args){
Pan frame = new Pan();
frame.setSize(800, 800);
frame.setLocationRelativeTo(null);
frame.setTitle("Number Pad");
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
}}
行下异常-将容器的父级添加到自身中
panel.add(panel);
还有一个更改总是从
EventQueue.invokeLater()调用它
void Pan()
,这不是构造函数。您从未调用Pan()
方法。但我怀疑你想让它成为一个构造函数。它应该是一个构造函数,这样就可以去掉void
部分,使它成为一个真正的构造函数。为什么它不是一个构造函数,因为它有void。构造函数没有指定它的return当我将其更改为public时,它仍然有一个错误。IllegalArgumentException请尝试我粘贴的代码。这对我来说很有效。我在执行panel之后仍然收到一个错误。添加(panel)ok将其更改为panel1。您的代码中声明了panel1
在哪里?我刚刚将代码更改为现在可以使用的代码。我想您不需要将其重命名为panel1
。您只需删除行panel.add(panel)代码>在上一个代码中。我想你现在已经解决了,现在就关闭它,按照我的建议去做。
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Pan frame = new Pan();
...
frame.setVisible(true);
}
});
}