Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为GridLayout的特定部分着色 private JPanel buildCenterPanel(ActionHandler) { JLabel[]tiles={new JLabel(“1”)、new JLabel(“2”)、new JLabel(“3”)、new JLabel(“4”)} JPanel centerPanel=新的JPanel(); setLayout(新的GridLayout(2,2)); JPanel grid0=新的JPanel(); JPanel grid1=新的JPanel(); JPanel grid2=新的JPanel(); JPanel grid3=新的JPanel(); JPanel[]面板={grid0,grid1,grid2,grid3}; 对于(int i=0;i_Java_Swing - Fatal编程技术网

Java 为GridLayout的特定部分着色 private JPanel buildCenterPanel(ActionHandler) { JLabel[]tiles={new JLabel(“1”)、new JLabel(“2”)、new JLabel(“3”)、new JLabel(“4”)} JPanel centerPanel=新的JPanel(); setLayout(新的GridLayout(2,2)); JPanel grid0=新的JPanel(); JPanel grid1=新的JPanel(); JPanel grid2=新的JPanel(); JPanel grid3=新的JPanel(); JPanel[]面板={grid0,grid1,grid2,grid3}; 对于(int i=0;i

Java 为GridLayout的特定部分着色 private JPanel buildCenterPanel(ActionHandler) { JLabel[]tiles={new JLabel(“1”)、new JLabel(“2”)、new JLabel(“3”)、new JLabel(“4”)} JPanel centerPanel=新的JPanel(); setLayout(新的GridLayout(2,2)); JPanel grid0=新的JPanel(); JPanel grid1=新的JPanel(); JPanel grid2=新的JPanel(); JPanel grid3=新的JPanel(); JPanel[]面板={grid0,grid1,grid2,grid3}; 对于(int i=0;i,java,swing,Java,Swing,我想制作一个2乘2的网格,其中右上角是红色,右下角是蓝色,但是我得到一个java文件,它有正确的数字,但颜色不在正确的位置…发布的方法缺少的主要内容是将标签添加到面板中 private JPanel buildCenterPanel(ActionHandler handler) { JLabel[] tiles = {new JLabel("1"),new JLabel("2"), new JLabel("3"), new JLabel("4")} JPanel centerPa

我想制作一个2乘2的网格,其中右上角是红色,右下角是蓝色,但是我得到一个java文件,它有正确的数字,但颜色不在正确的位置…

发布的方法缺少的主要内容是将标签添加到面板中

private JPanel buildCenterPanel(ActionHandler handler)
{
    JLabel[] tiles = {new JLabel("1"),new JLabel("2"), new JLabel("3"), new JLabel("4")}
    JPanel centerPanel = new JPanel();
    centerPanel.setLayout(new GridLayout(2, 2));
    JPanel grid0 = new JPanel();
    JPanel grid1 = new JPanel();
    JPanel grid2 = new JPanel();
    JPanel grid3 = new JPanel();

    JPanel[] panels = {grid0, grid1, grid2, grid3}; 
    for (int i = 0; i < tiles.length; i++)
    {
        panels[i].add(tiles[i]);
        if(((JLabel)panels[i].getComponent(0)).getText().equals("2"))
        {
            panels[i].setBackground(Color.red);
        }
        if(((JLabel)panels[i].getComponent(0)).getText().equals("4"))
        {
            panels[i].setBackground(Color.blue);
        }
        centerPanel.add(panels[i]);
    }
    return centerPanel;
private JPanel buildCenterPanel()
{
JLabel[]tiles={new JLabel(“1”)、new JLabel(“2”)、new JLabel(“3”)、new JLabel(“4”)};
JPanel centerPanel=新的JPanel();
setLayout(新的GridLayout(2,2));
JPanel grid0=新的JPanel();
add(tiles[0]);//将标签添加到JPanel
JPanel grid1=新的JPanel();
网格1.添加(瓷砖[1]);
JPanel grid2=新的JPanel();
网格2.添加(瓷砖[2]);
JPanel grid3=新的JPanel();
网格3.添加(瓷砖[3]);
JPanel[]面板={grid0,grid1,grid2,grid3};
对于(int i=0;i
使用循环会稍微好一点:

private JPanel buildCenterPanel()
{
    JLabel[] tiles = {new JLabel("1"),new JLabel("2"), new JLabel("3"), new JLabel("4")};
    JPanel centerPanel = new JPanel();
    centerPanel.setLayout(new GridLayout(2, 2));
    JPanel grid0 = new JPanel();
    grid0.add(tiles[0]); // add the label to the JPanel
    JPanel grid1 = new JPanel();
    grid1.add(tiles[1]);
    JPanel grid2 = new JPanel();
    grid2.add(tiles[2]);
    JPanel grid3 = new JPanel();
    grid3.add(tiles[3]);

    JPanel[] panels = {grid0, grid1, grid2, grid3};
    for (int i = 0; i < tiles.length; i++)
    {
        panels[i].add(tiles[i]);
        if(((JLabel)panels[i].getComponent(0)).getText().equals("2"))
        {
            panels[i].setBackground(Color.red);
        }
        if(((JLabel)panels[i].getComponent(0)).getText().equals("4"))
        {
            panels[i].setBackground(Color.blue);
        }
        centerPanel.add(panels[i]);
    }
    return centerPanel;
}
private JPanel buildCenterPanel()
{
int行=2,cols=2;
JPanel centerPanel=新的JPanel();
setLayout(新的网格布局(行、列));
对于(int i=0;i<(行*列);i++)
{
JPanel panel=new JPanel();//构造一个面板
panel.add(新标签(String.valueOf(i+1));//向其添加标签
//设置面板的背景
如果(i==1){
面板.立根背景(颜色.红色);
}else如果(i==3){
面板.立根背景(颜色.蓝色);
}
中心面板。添加(面板);
}
返回中心面板;
}
A可以简单到:

private JPanel buildCenterPanel()
{
    int rows = 2, cols = 2;
    JPanel centerPanel = new JPanel();
    centerPanel.setLayout(new GridLayout(rows, cols));

    for (int i = 0; i < (rows*cols) ; i++)
    {
        JPanel panel = new JPanel(); //construct a panel
        panel.add(new Label(String.valueOf(i+1))); //add label to it
        //set panel's background 
        if(i == 1) {
            panel.setBackground(Color.red);
        }else if(i == 3) {
            panel.setBackground(Color.blue);
        }
        centerPanel.add(panel);
    }
    return centerPanel;
}
导入java.awt.Color;
导入java.awt.GridLayout;
导入java.awt.Label;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共类TestPanel扩展了JPanel{
私有最终静态int行=2,COLS=2;
公共测试面板(){
setLayout(新网格布局(行、列));
对于(int i=0;i<(行*列);i++)
{
JPanel面板=新的JPanel();
添加(新标签(String.valueOf(i+1));
如果(i==1){
面板.立根背景(颜色.红色);
}else如果(i==3){
面板.立根背景(颜色.蓝色);
}
添加(面板);
}
}
公共静态void main(字符串[]args){
JFrame窗口=新JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
添加(新的TestPanel());
window.pack();
window.setVisible(true);
}
}

为了更快地获得更好的帮助,请发布or。这个java项目涉及多个类,因此我不确定应该如何包含Tile array1)mcve不应该演示您的项目,而不是您的问题2)两个JPanel是否足以演示问题?3)
(JLabel)面板[I]
为什么在使用
JPanels
初始化
JLabels
后,您希望
panels
保持住
JLabels
?请将它们移到MCVE中。请注意,MCVE不是您的代码,只是一个显示相同问题的简短示例。说到这里,当我试图对不可编译的代码片段进行MCVE时,您是否希望这样有什么不同吗?投票以“没有MCVE”结束。等等……这就是我想要的,你是怎么做到的(我是新来的,对代码也很糟糕,所以我不知道MCVE是什么)非常感谢你!-不,但像是认真的谢谢:)
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestPanel extends JPanel{

    private final static int ROWS = 2, COLS = 2;

    public TestPanel() {

        setLayout(new GridLayout(ROWS, COLS));

        for (int i = 0; i < (ROWS*COLS) ; i++)
        {
            JPanel panel = new JPanel();
            panel.add(new Label(String.valueOf(i+1)));

            if(i == 1) {
                panel.setBackground(Color.red);
            }else if(i == 3) {
                panel.setBackground(Color.blue);
            }
            add(panel);
        }
    }

    public static void main(String[] args){

        JFrame window = new JFrame();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.add(new TestPanel());
        window.pack();
        window.setVisible(true);
    }
}