我正在为我的Swing GUI制作一个自定义JComponent。
public class BreadCrump extends JComponent implements MouseListener,
MouseMotionListener{
JPanel cajaPrincipal;
JLabel nombre;
JLabel propiedadUsada;
JLabel numeroApariciones; //OPCIONAL
public BreadCrump(String nombre, String relacion)
{
}
public BreadCrump(String nombre)
{
this.nombre = new JLabel(nombre);
this.cajaPrincipal = new JPanel();
this.cajaPrincipal.setPreferredSize(new Dimension(60,40));
this.cajaPrincipal.setSize(60, 40);
this.cajaPrincipal.add(this.nombre);
this.cajaPrincipal.setBackground(Color.blue);
this.nombre.setLocation(10, 10);
this.cajaPrincipal.setVisible(true);
this.setPreferredSize(new Dimension(60,40));
this.setSize(60,40);
this.setBackground(Color.red);
this.setVisible(true);
addMouseListener(this);
addMouseMotionListener(this);
}
在这段代码中创建对象:
JPanel a = new JPanel();
JScrollPane sp = new JScrollPane(a);
sp.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
sp.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//sp.setBounds(0, 0,father.getSize().width, height);
this.add(sp);
father.add(this, java.awt.BorderLayout.PAGE_END);
for (int i = 0; i < 8; i++) {
BreadCrump prueba = new BreadCrump("prueba " + i);
a.add(prueba);
}
问题在于我无法看到该组件。该组件存在于我的JPanel“a”中,并且JScrollPane会检测它,因为会出现滚动条。
我尝试将JComponent更改为JPanel并且它可以工作,我可以看到JPanel(当我更改颜色和preferredSize时)。但我不知道为什么看不到我的JComponent。
任何人都知道我做错了什么?也许我需要在组件中放置一个位置?我试图添加尺寸并且可见,但没有任何事情发生。
谢谢你的时间!