Tag: 网格布局

Java制作Connect Four游戏面板

我正在为计算机科学课程制作Connect Four作为我的CPT。 到目前为止,我已经创建了面板,但我遇到了问题。 我要做的是在电路板上每个插槽制作一个面板,并用连接四板的空插槽填充它,当每个点组合时,它看起来像一个完整的连接四板。 基本上我是在我的主面板上添加一个网格布局面板,并用包含插槽图片的多个其他面板填充网格面板。 我已经创建了一个子程序来完成这项工作。 但是当我运行我的程序时,中间只有一个插槽,而不是应该显示的42个(电路板是7乘6)。 我现在的目标是为我的子程序创建42个JPanel并将它们放入我创建的网格面板中。 我知道这可能没有多大意义,但希望代码可以帮助您了解更多。 谢谢你的帮助。\ PS emptyBox.jpg基本上是连接四板上空插槽的图片。 我想用这些填充面板,所以它看起来像一个完整的板。 这是迄今为止的代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; public class ConnectFour { static JFrame mainWindow; static JButton firstArrow = new JButton(“Drop”); static JButton secondArrow = new JButton(“Drop”); static JButton thirdArrow = new JButton(“Drop”); static JButton fourthArrow = new JButton(“Drop”); […]

使用RecyclerView添加到GridLayout的动态按钮会相互添加

我想将动态按钮添加到网格布局,如下所示。 每个按钮一次添加一个 ,并且布局必须自行更新以使按钮成行。 我的问题是,当添加一个新按钮时,它会出现在添加的最后一个按钮的顶部,而不是以行格式放置。 在下图中,我展示了我想要的和当前正在发生的事情,标有数字的方块是我的按钮。 在我所拥有的图像中,我在布局中添加了6个按钮,但它们都是相互叠加的。 我已经四处查看了如何做到这一点,并建议我使用带有GridLayoutManager的RecyclerView 。 我已将此添加到我的代码中,但就像我说的问题是,当我添加一个按钮,然后如果我添加另一个按钮,第二个添加到第一个按钮之上。 如果我的按钮是预设的,我的工作原理,但不适用于动态按钮。 这是我的代码: Main Fragment启动RecyclerView 。 我有另一个活动启动createButton()方法并传递drawable和String 。 这些drawable和字符串将根据用户的操作一次一个地传递给此方法,并一次创建一个图像按钮。 public class MyFragment extends Fragment { private GridLayoutManager lLayout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } // onCreateView @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.my_fragment, container, false); // Get screen […]

GridLayout上的动画精灵

我有点卡住了。 我正在创建一个Java内存游戏,它包含一个6×6网格的动画精灵(我教授的要求)。 在我的试用版中,我只能显示一个具有精灵动画的组件。 我的另一个尝试是改变p1 [i] = new Ash(),它能够将所有精灵绘制到网格中的所有组件但没有动画。 我想问一些关于如何处理这个问题的想法,其中网格中的所有组件都有一个ANIMATED精灵。 我的主要课程: public class Main extends Component{ public static void main(String[] args) { Ash ash = new Ash(); JFrame f = new JFrame(“Game sample”); JPanel panel1 = new JPanel(new GridLayout(6,6,6,6)); JPanel[] p1 = new JPanel[36]; for(int i = 0;i trigger) { trigger = start + delay; ash.repaint(); […]

使用带有GridLayoutManager的RecyclerView为手机和平板电脑的不同布局添加动态按钮

我正在为布局添加动态按钮。 每个按钮一次添加一个,如果根据用户的操作添加了新按钮,则布局必须自行更新。 所以布局可以有3个按钮,或者16个,或者其他什么,具体取决于用户的动作。 按钮可以在不同的时间添加。 因此,如果用户打开应用程序并添加按钮,然后离开并返回到应用程序并添加另一个按钮,则必须保留旧按钮。 我想将我的按钮逐个添加到这样的布局中: 我已经四处查看了如何做到这一点,并建议我使用带有GridLayoutManager的RecyclerView。 我已将此添加到我的代码中,但问题是,当我添加一个按钮,然后如果我添加另一个按钮,第二个添加到第一个按钮之上。 因此,如果用户操作说应该制作16个按钮,我只是将16个按钮放在彼此的顶部,而不是我想要的布局。 这是我的代码: 启动RecyclerView的主要片段:我有另一个活动启动“createButton”方法并传递drawable和字符串。 这些drawable和字符串将根据用户的操作一次一个地传递给此方法,并一次创建一个图像按钮 public class MyFragment extends Fragment { private GridLayoutManager lLayout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } // onCreateView @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.my_fragment, container, false); // Create an empty list to initialize the […]

如何将图像放在特定的JPanel中?

我最近正在尝试棋盘游戏,现在我正在制作Checkers棋盘游戏。 但是,我可以弄清楚如何在GridLayout的单元格中显示芯片。 每个单元都有自己的JPanel ,我通过FOR循环在2D数组中分配。 我需要在特定的JPanel中显示图像p1Chip ,它只是一个.png ,让我们说它的变量名称是board[2][3] ,而不会搞乱GridLayout 。 关于如何做到这一点的示例代码将是很好的,因为它将帮助我更好地理解。 我在互联网上搜索过但我找不到我需要的东西,或者至少找不到解释如何做的东西。 这是到目前为止的代码: package checkers; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.Image; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.Color; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import […]

通过循环添加JPanel

让它工作! 感谢你们! 代码如下。 我使用了BoxLayout因为我认为将问题叠加在另一个上是理想的,但现在我遇到了布局问题……当我堆叠几个问题时,问题面板开始重叠。 有什么想法吗? panels1 = new MultipleChoice[5]; setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); for(int i=0; i<4; i++){ panels1[i]= new MultipleChoice(); panels1[i].setAlignmentX(CENTER_ALIGNMENT); add(panels1[i]); } setVisible(true); 我正在设计一个在线测试小程序。 测试有多种选择和真/假问题。 为了设置测试,我创建了两个JPanel类,一个用于多项选择题,一个用于真/假题。 因此,当创建测试时,我将根据非固定数量的问题动态地将这些面板添加到JPanel容器中。 首先,如何动态地将新面板添加到面板? 我想过声明一个JPanel类型的数组。 我使用for循环创建然后添加此面板类的对象: MultitipleChoicePanel[] PanelArray; for (…){ PanelArray[i] = new MultipleChoicePanel(); containerpanel.add(PanelArray[i]); } 我不知道这在技术上是否可行。 这是我第一次使用Swing,我试过这样做,但显然它不起作用。 有没有人知道如何正确动态添加这些面板? 其次,哪个布局管理器最适合容器面板,以便适合在前一个面板下添加的每个新面板? 我想过动态设置一列的GridLayout并在添加面板时添加行。 但我一直在努力动态修改波动。 有什么建议? 非常感谢你的帮助!

如何删除按钮周围的边框?

我有一个带GridLayout的JPanel。 在网格的每个单元格中,我都有一个按钮。 我看到每个按钮都被灰色边框包围。 我想删除这些边框。 有人知道怎么做吗?

Java Swing GridLayout“Cell span”?

有没有办法让网格布局中的单个元素占用网格中的多个位置。 示例:我想创建一个占据整个网格行的文本框,有什么办法可以做到这一点吗?

GridLayout +鼠标监听器

好的家伙我有一个问题,我不知道怎么知道在网格布局上点击了哪个单元格,有什么function吗? 我在容器上有网格布局,包含10行和10列,我想要的是所有单元格的鼠标监听器,所以当我单击单元格(2,1)时,它会说出由于鼠标监听器而单击的单元格。 有什么线索吗? 非常感谢

用JPanel创建一个棋盘

我在JPanel有一个简单的Chess板, GridLayout(8,8)作为布局管理器。 我正在尝试为字段的列名和行号添加面板。 现在我用BorderLayout创建了另一个面板作为布局管理器,在这个面板中我在BorderLayout.CENTER添加了板。 在董事会本身旁边,我在BorderLayout.SOUTH添加了一个GridLayout(0,8)面板,在BorderLayout.SOUTH添加了一个GridLayout(8,0)面板。 行号完全放在电路板旁边,因为左侧JPanel中的行数与电路板中的行数相匹配,但列名称(A,B,C,D,E,F,G,H)在由于BorderLayout.WEST中的JPanel,因此未正确放置棋盘下的JPanel。 如何制作带侧板的合适棋盘以显示字段编号/名称? 我已经尝试将南面板的布局设置为GridLayout(0,9)并将第一个字段设置为空,但左面板的宽度不等于电路板中的每个字段,因此这不是一个好的解决方法。