我正在尝试连接四个gui。
我有一个类Gui,它创建一个board(一个array [] [] ints)和一个方法move-接受player(int)和column(int) - 以及一个检查是否有胜利者的方法。
我使用gridLayout创建了一个gui,我有一行按钮和7个JLabel数组(这是一个空插槽的ImageIcon)我现在需要访问特定数组的最底层JLabel,如果玩家选择该列。
我在循环中创建了按钮:
如何将所有内容放入新面板中,以便在网格顶部设置标题栏?
我的gui代码
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class ConnectFourGui extends JFrame {
private JLabel title;
private JButton button;
ImageIcon[] emptySlot;
ImageIcon arrow;
public ConnectFourGui() {
this.setTitle("Connect Four");
this.setSize(800, 800);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//JPanel panel = new JPanel();
//Container container = this.getContentPane();
this.setLayout(new GridLayout(7, 7));
this.title = new JLabel("Connect Four");
title.setForeground(Color.RED);
title.setFont(new Font("Sans-Serif", Font.BOLD, 50));
title.setHorizontalAlignment(SwingConstants.CENTER);
for (int i = 0; i < 7; i++){
arrow = new ImageIcon("arrowButton.png");
this.button = new JButton(arrow);
this.add(button);
}
for (int i = 0; i < 7; i++){
emptySlot = new ImageIcon[6];
for (int j = 0; j<6;j++){
emptySlot[j] = new ImageIcon("emptySlot.png");
this.add(new JLabel(emptySlot[j]));
}
}
答案 0 :(得分:0)
尝试为每列创建单独的数组(请参阅下面的代码)。还要使您的数组成为JLabel数组,而不是ImageIcons。并使用唯一名称创建每个按钮。
column1 = new JLabel[6];
column2 = new JLabel[6];
column3 = new JLabel[6];
column4 = new JLabel[6];
column5 = new JLabel[6];
column6 = new JLabel[6];
column7 = new JLabel[6];
for (int j = 0; j < 6; j++) {
column1[j] = new JLabel(emptySlot);
column2[j] = new JLabel(emptySlot);
column3[j] = new JLabel(emptySlot);
column4[j] = new JLabel(emptySlot);
column5[j] = new JLabel(emptySlot);
column6[j] = new JLabel(emptySlot);
column7[j] = new JLabel(emptySlot);
this.add(column1[j]);
this.add(column2[j]);
this.add(column3[j]);
this.add(column4[j]);
this.add(column5[j]);
this.add(column6[j]);
this.add(column7[j]);
}
根据顶部的按钮在数组中加入一个元素做类似的事情
buttonName.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent a) {
column1[3].setIcon(newIcon);
}
}
在构造函数中实例化您的board类。