我有一个JLabel的子类,形成了我的GUI的一个组件.我已经实现了将组件从一个容器拖放到另一个容器的能力,但没有任何视觉效果.我想让这个JLabel在从一个容器到另一个容器的拖动期间跟随光标.我想我可以创建一个玻璃窗,并在那里绘制.但是,即使将组件添加到玻璃窗格中,将组件设置为可见,并将玻璃窗格设置为可见,并将玻璃窗格设置为不透明,我仍然看不到组件.我知道组件的工作原理,因为我可以将其添加到内容窗格并显示.
如何在玻璃窗格中添加组件?
最后想到如何让简单的例子工作.谢谢,@akf.我能够将此解决方案适应我的原始问题,允许我删除手动呈现JLabel表示的约60行Java2D代码.
package test; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; public class MainFrame extends JFrame { /** * @param args */ public static void main(String[] args) { MainFrame mf = new MainFrame(); mf.setSize(400,400); mf.setLocationRelativeTo(null); mf.setDefaultCloSEOperation(DISPOSE_ON_CLOSE); mf.setGlassPane(new JPanel()); JLabel l = new JLabel(); l.setText("Hello"); l.setBorder(new LineBorder(Color.BLACK,1)); l.setBounds(10,10,50,20); l.setBackground(Color.RED); l.setOpaque(true); l.setPreferredSize(l.getSize()); //mf.add(l); ((JPanel)mf.getGlassPane()).add(l); mf.getGlassPane().setVisible(true); mf.setVisible(true); } }