[英]Java Swing - how do i paint this class which extends JComponent
我试图创建一个扩展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);
}}
获得:
预期:
您创建了MyComponent组件的实例,但从未将任何组件添加到您的组件中,因此无需绘制任何内容。
在MyComponent类的构造函数中,创建一个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
,因为面板的目的是包含其他组件。 好像是作业,我会尝试作为老师回答
您忘记了加载MyWindowComp()方法的方法
如果已加载,并且仅显示菜单栏,则您忘记使用frame.setSize(x,y);来设置它的大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.