我尝试创建一个扩展JComponents的类,但是当我将它添加到Box时,我只能看到一个空窗口。你能帮助我吗? 我期待得到的是一个窗口,有3个水平框,旁边有一个标签和一个按钮。
public class MyWindowComp{
public MyWindowComp(){
JFrame frame = new JFrame("myFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel wp = new JPanel(new BorderLayout());
Box vBox = new Box(BoxLayout.Y_AXIS);
MyComponent one = new MyComponent();
MyComponent two = new MyComponent();
MyComponent three = new MyComponent();
vBox.add(one);
vBox.add(two);
vBox.add(three);
wp.add(vBox);
frame.add(wp);
frame.setVisible(true);
}}
public class MyComponent extends JComponent {
private Box box;
private JButton b;
private JLabel l;
public MyComponent(){
this.box = new Box(BoxLayout.X_AXIS);
this.l = new JLabel ("label");
this.l.setVisible(true);
this.b = new JButton("button");
this.b.setVisible(true);
box.add(l);
box.add(b);
}}
获得:
预期:
答案 0 :(得分:3)
您创建了MyComponent组件的实例,但您从不向组件添加任何组件,因此无需绘制任何内容。
在MyComponent classe的构造函数中,您创建一个Box,然后向Box添加两个组件,但不要将Box添加到组件中。
解决方案是摆脱Box并将按钮和标签直接添加到组件中:
public MyComponent()
{
setLayout( new BoxLayout(this, BoxLayout.X_AXIS) );
l = new JLabel ("label");
b = new JButton("button");
add(l);
add(b);
}
此外:
JPanel
,因为面板的目的是包含其他组件。答案 1 :(得分:0)
看起来像个作业,我会尝试作为老师回答
您忘记了加载MyWindowComp()方法的方法
如果已加载,并且只显示菜单栏,则您忘记使用frame.setSize(x,y)设置大小;