是否有可能添加多个GlassPane处理单一JFrame,或者我必须使用不舒服LayeredPane与Opacity属性。我已经附上了一些代码,该代码显示了我想做什么(由@camickr提供)。import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;public class MultiplayGlassPane { private static final long serialVersionUID = 1L; private JFrame frame = new JFrame("frameTitle"); private JPanel fPanel = new JPanel(); private Random random = new Random(); private final static Border MESSAGE_BORDER = new EmptyBorder(10, 10, 10, 10); private JLabel message = new JLabel(); private ArrayList<Star> stars = new ArrayList<Star>(); public MultiplayGlassPane() { MyGlassPane glass = new MyGlassPane(); for (int i = 0; i < 35; i++) { Star star = new Star(new Point(random.nextInt(580), random.nextInt(550))); star.setColor(Color.orange); star.setxIncr(-3 + random.nextInt(7)); star.setyIncr(-3 + random.nextInt(7)); glass.add(star); } frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(glass, BorderLayout.CENTER); frame.setLocation(20, 20); frame.pack(); frame.setVisible(true); DisabledGlassPane1 glassPane = new DisabledGlassPane1(); JRootPane rootPane = SwingUtilities.getRootPane(frame); rootPane.setGlassPane(glassPane); glassPane.activate(""); } private class MyGlassPane extends JLabel { private static final long serialVersionUID = 1L; private ArrayList<Star> stars = new ArrayList<Star>(); private javax.swing.Timer timer = new javax.swing.Timer(20, new ActionListener() {
2 回答

守着一只汪
TA贡献1872条经验 获得超3个赞
我认为您对示例中的术语感到困惑。“ MyGlassPane”根本不是玻璃窗格,它只是一个JComponent。您应该将其重命名为“ StarPanel”。它被添加到JFrame容器中。附带说明,使用JFrame.add()是非法的,您应该使用frame.getContentPane()。add()将MyGlassPane添加到根容器中
添加回答
举报
0/150
提交
取消