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
我想制作一个2乘2的网格,其中右上角是红色,右下角是蓝色,但是我得到一个java文件,它有正确的数字,但颜色不在正确的位置…发布的方法缺少的主要内容是将标签添加到面板中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
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);
}
}