Java JFrame上的JPanel数组 公共帧(){ JFrame=新JFrame(“测试”); 框架。设置尺寸(400300); frame.setLocationRelativeTo(空); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(新的GridBagLayout()); int i=4; int j=4; JPanel[][]专家组成员=新JPanel[i][j]; 对于(int a=0;a

Java JFrame上的JPanel数组 公共帧(){ JFrame=新JFrame(“测试”); 框架。设置尺寸(400300); frame.setLocationRelativeTo(空); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(新的GridBagLayout()); int i=4; int j=4; JPanel[][]专家组成员=新JPanel[i][j]; 对于(int a=0;a,java,swing,user-interface,Java,Swing,User Interface,当我尝试将组件添加到面板或设置颜色不变时,我使用了其他地方的代码,但前几天我写下了代码,无法再次找到它,但是循环正在将JPanel添加到帧中,对吗?那么为什么我不能添加到JPanel?问题是,在构造函数中有一个与y同名的对象我们的类,但当调用setVisible()时,您没有使用它。您可以通过使类扩展JFrame,然后使用此构造函数来解决此问题: public frame() { JFrame frame = new JFrame("Test"); frame.setSize(400

当我尝试将组件添加到面板或设置颜色不变时,我使用了其他地方的代码,但前几天我写下了代码,无法再次找到它,但是循环正在将JPanel添加到帧中,对吗?那么为什么我不能添加到JPanel?

问题是,在构造函数中有一个与y同名的对象我们的类,但当调用
setVisible()
时,您没有使用它。您可以通过使类扩展
JFrame
,然后使用此构造函数来解决此问题:

public frame() {
   JFrame frame = new JFrame("Test");
   frame.setSize(400,300);
   frame.setLocationRelativeTo(null);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setLayout(new GridBagLayout());
   int i = 4;
   int j = 4;
   JPanel[][] panelHolder = new JPanel[i][j];

   for (int a = 0; a < i; a++) {
       for (int b = 0; b < j; b++) {
           panelHolder[a][b] = new JPanel();
           add(panelHolder[a][b]);
       }
   }
   panelHolder[3][2].setForeground(Color.BLUE);
   JButton enter = new JButton("Enter");
   panelHolder[0][0].add(enter);

   frame.setVisible(true);
公共帧(){
设置大小(400300);
setLocationRelativeTo(空);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(新的GridBagLayout());
int i=4;
int j=4;
JPanel[][]专家组成员=新JPanel[i][j];
对于(int a=0;a
问题在于,构造函数中有一个与类同名的对象,但调用
setVisible()
时,您没有使用它。您可以通过使类扩展
JFrame
,然后使用此构造函数来解决此问题:

public frame() {
   JFrame frame = new JFrame("Test");
   frame.setSize(400,300);
   frame.setLocationRelativeTo(null);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setLayout(new GridBagLayout());
   int i = 4;
   int j = 4;
   JPanel[][] panelHolder = new JPanel[i][j];

   for (int a = 0; a < i; a++) {
       for (int b = 0; b < j; b++) {
           panelHolder[a][b] = new JPanel();
           add(panelHolder[a][b]);
       }
   }
   panelHolder[3][2].setForeground(Color.BLUE);
   JButton enter = new JButton("Enter");
   panelHolder[0][0].add(enter);

   frame.setVisible(true);
公共帧(){
设置大小(400300);
setLocationRelativeTo(空);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(新的GridBagLayout());
int i=4;
int j=4;
JPanel[][]专家组成员=新JPanel[i][j];
对于(int a=0;a
为什么你的构造函数和JFrame同名?你算出来了吗?当你问为什么你的代码不工作时,请发一个有效的帖子。如果我们真的可以编译并运行你的代码,你会得到更好的答案。请阅读链接——mcve应该很短,应该为我们编译并运行,不应该在链接中。运气好。是的,th为什么你有相同名称的构造函数和JFrame?你解决了吗?当问为什么你的代码不工作时,请发一个有效的帖子。如果我们可以编译和运行你的代码,你会得到更好的答案。请阅读链接——mcve应该很短,应该为我们编译和运行,不应该在链接中。祝你好运。是的,谢谢。变量名与问题无关。它令人困惑,是的,但不是问题的原因(我们还可以确定)。我不是说你的代码不工作,但这并不能解释为什么他的代码不工作。他的问题是他使用了两个JFrame,但变量的名称不是问题所在。他可以将其命名为Foobar,问题仍然存在。@HovercraftFullOfEels是的,我在回答中注意到了问题并更正了解释。谢谢!(我可以补充一点,被这么多“名人”XD注意到是非常荣幸的)@HovercraftFullOfEels不是一个名人,但你在这里很有名,因为你对与Swing相关的问题以及其他一些问题都有很好的解释。关于这两个框架,Itamar有一个很好的理解,1+因为变量名与问题无关。是的,这让人困惑,但不是问题的原因(我们可以告诉你)。我不是说你的代码不工作,但这并不能解释为什么他的代码不工作。他的问题是他使用了两个JFrame,但变量的名称不是问题所在。他可以将其命名为Foobar,问题仍然存在。@HovercraftFullOfEels是的,我在回答中注意到了问题并更正了解释。谢谢!(我想补充一点,能被这么多“名人”XD注意到真是太好了)@hovercraftfullofels不是名人,但你在这里很出名,因为你对与挥杆相关的问题以及其他一些问题都有很好的解释。Itamar很好地捕捉到了这两个画面,1+