java新手。我在两个单独的java文件中有两个类。
Grid.java的代码是:
package grid;
import java.awt.*;
import javax.swing.*;
public class Grid {
public static void main(String[] args){
JFrame f = new JFrame("The title");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,400);
f.setResizable(false);
f.setVisible(true);
GridSupport g = new GridSupport();
f.add(g); //getting error when i don't extends GridSupport to JPanel
}
}
GridSuppoer.java的代码是:
package grid;
import java.awt.*;
import javax.swing.*;
public class GridSupport extends JPanel{
private JPanel p;
private JButton b;
public GridSupport(){
p = new JPanel();
p.setBackground(Color.GREEN);
p.setSize(100, 100);
b = new JButton("Click me!");
p.add(b);
}
}
我想知道1)为什么没有播放JPanel? 2)如果我将两个类放在同一个文件中,我不需要将GridSupport类扩展到JPanel,但是当我将它们放在两个单独的文件中时,我需要扩展JPanel,否则它会显示错误。为什么?
答案 0 :(得分:2)
JFrame f = new JFrame("The title");
GridSupport g = new GridSupport();
f.add(g)
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,400);
f.setResizable(false);
f.setVisible(true);
在设置框架可见之前添加GridSupprt
。通常,您应该确保在使其可见之前将所有组件添加到框架
GridSupport本身就是一个JPanel。因此,当您在GridSupport中创建一个新的JPanel并只添加该Panel中的所有内容时,您仍然需要将内部面板添加到GridSupport
public class GridSupport extends JPanel{
private JButton b;
public GridSupport(){
setBackground(Color.GREEN);
setSize(100, 100);
b = new JButton("Click me!");
add(b);
}
}
答案 1 :(得分:1)
因为GridSupport扩展了JPanel,所以不需要在其中创建JPanel(因为它是JPanel本身,具有一些额外的功能。 你的GridSupport类看起来应该是这样的:
package grid;
import java.awt.*;
import javax.swing.*;
public class GridSupport extends JPanel{
private JButton b;
public GridSupport(){
this.setBackground(Color.GREEN);
this.setSize(100, 100);
b = new JButton("Click me!");
this.add(b);
}
}