我写了一个小程序,仅供个人使用,以双重检查策略的手机游戏。我创造了一个 Board
类和框架等等,然后我在包中创建了一个新的panel类(我使用eclipse)。我想这很简单,只需创建两个面板,实现面板并将其添加到 Board
班级。唉,我错了。
tubepanel-我的辅助面板
package ballSort;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerListModel;
import javax.swing.JLabel;
public class TubePanel extends JPanel {
/**
* Create the panel.
*/
public TubePanel() {
setBackground(new Color(47, 79, 79));
setBounds(10, 10, 30, 40);
}
}
这是我主板课的节选
panel_1 = new JPanel();
panel_1.setBounds(118, 164, 726, 466);
frame.getContentPane().add(panel_1);
JButton btnNewButton_1 = new JButton("X");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
btnNewButton_1.setFont(new Font("Tahoma", Font.PLAIN, 89));
btnNewButton_1.setBounds(10, 122, 85, 124);
frame.getContentPane().add(btnNewButton_1);
}
public void Create(int tubes) {
TubePanel tube = new TubePanel();
panel_1.add(tube);
System.out.println(tube);
System.out.println(panel_1);
}
我是这里的白痴吗?就我而言,这应该是有效的,但显然我不知道java的方式[只编写了4年的java语言。]不管怎样,问题是它没有显示tubepanel。它也没有给出任何错误,所以我不得不使用sysout来查看它是否有任何问题,然后 panel_1
作为比较。。。
ballSort.TubePanel[,10,10,30x40,**invalid**,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
javax.swing.JPanel[,118,164,726x466,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
除了无效的(我试图跟随它到它的根,我无法找出它)没有什么不同,从面板1相比,管。
非常感谢您的帮助。
1条答案
按热度按时间isr3a4wc1#
请参阅题为laying out components in a container from trail creating a gui with jfc/swing的课程,这是oracle java教程的一部分。
的内容窗格的默认布局
JFrame
是BorderLayout
. 将组件添加到内容窗格时,它将添加到内容窗格的中心区域BorderLayout
. 中心区域(和所有其他区域)BorderLayout
只能包含单个组件。因此,当您将两个组件添加到中心区域时,将只显示一个组件。请参阅类中的add方法(组件、对象)java.awt.Container
因此,研究布局管理器,并决定哪一个是合适的。