gpt4 book ai didi

java - 如何将我的旧 JFrame 转换为 JPanel,以及如何使其像我使用 JFrame 时一样实际工作

转载 作者:行者123 更新时间:2023-12-01 13:04:09 25 4
gpt4 key购买 nike

我对 swing lib 真的很陌生,大概 5 天前我开始使用它...所以我有很多问题...首先,我在 JFrame 上制作了一个 Tic Tac Toe 游戏,离开会很酷就像这样,但后来我想到了制作一个小菜单来访问多个小游戏(到目前为止只是为了好玩/练习)。所以我实际上成功了,然后它发生了......我在 JFrames 中制作了所有游戏,所以,制作一个菜单也是另一个 JFrame,所以我有这么多窗口......一直!

我做了一些研究,人们通常为这类东西制作 Jpanels.. 但我不知道如何将我的游戏(井字棋)转移到 JPanel 并使其完全按照原来的方式工作...这是我的JFrame 中 Tic Tac Toe 的代码...IDE 是 netbeans。

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.*;


public class Gato extends javax.swing.JFrame implements ActionListener {


Boton MAPA[][];


public static boolean turno=true;

public Gato(){
initComponents();

MAPA= new Boton[3][3];

for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
MAPA [i][j]=new Boton();
MAPA[i][j].u.setBounds((i*230)+10,(j*230)+10,230,230);
MAPA[i][j].u.addActionListener(this);
this.add(MAPA[i][j].u);
}

}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel o=new JLabel("Hola");
o.setBounds(60, 60, 100, 100);
this.add(o);

}

最佳答案

如何JFrame 中构建 JPanels 是一个架构问题,超出了本网站的范围。

帮助您了解这两种容器之间的区别:

更改公共(public)类 Gato 扩展 javax.swing.JFrame 实现 ActionListener {

公共(public)类Gato扩展javax.swing.JPanel实现ActionListener {

然后,创建一个新的“驱动程序”类,执行如下操作:

   public static void main(String[] args){
JFrame frame = new JFrame();
Gato gato = new Gato();
frame.setContentPane(gato);
frame.setVisible(true);
}

JFrame 和 JPanel 之间的唯一区别是 JFrame 是顶级容器 - 它作为自己的窗口存在 - 而 JPanel 是必须加载到顶级容器内的东西。 Here关于它们在概念上的差异进行了精彩的讨论。

在实践中,一旦你创建了框架并将面板嵌入到其中(这个过程有一些怪癖,我承认当我第一次接触 Swing 时,它们让我绊倒了好几次 -请务必仔细阅读 documentation,特别注意 JFrame.pack()JPanel.validate()),您可以像您一样对待该面板如果它是一个框架,就会。

事实上,我经常通过将 JPanel 元素更改为 JFrame 来测试它们,以便独立于任何容器进行测试。

关于java - 如何将我的旧 JFrame 转换为 JPanel,以及如何使其像我使用 JFrame 时一样实际工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23355447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com