我真的很喜欢摇摆lib,就像5天前我开始使用它...所以我有很多问题...首先,我在JFrame上做了一个Tic Tac Toe游戏,离开会很酷就像那样,但后来我想出了一个小菜单来访问多个小游戏(目前为止只是为了娱乐/练习)。所以我真的成功了,然后就发生了...我在JFrames制作了所有的游戏,所以,制作一个菜单也是另一个JFrame,所以我有这么多窗口......所有的时间!
我做了一些研究,人们通常会为这种东西制作Jpanels ..但我不知道如何将我的游戏(Tic Tac Toe)转移到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);
}
答案 0 :(得分:1)
如何在JPanels
内构建JFrame
是一个超出本网站范围的架构问题。
帮助您了解这两种容器之间的区别:
更改public class Gato extends javax.swing.JFrame implements ActionListener {
到public class Gato extends javax.swing.JPanel implements 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来测试它们,以便独立于任何容器来测试它们。
答案 1 :(得分:0)
不是将组件添加到JFrame
,而是将其添加到JPanel
,然后将JPanel
添加到JFrame
。
答案 2 :(得分:0)
对于您的问题,您只需要一个JDesktopPane,并且您的所有JFrame都需要JIternalFrame并在JDesktopPane中调用所有InternalFrame。
Go to this link and check out examples
您不需要将它们转换为面板和所有。 或者您也可以尝试使用netbeans内置的JDesktopPane示例。