【问题标题】:How to do inner construct for Frame() with super()?如何用 super() 为 Frame() 做内部构造?
【发布时间】:2011-10-06 17:50:03
【问题描述】:

当 Frame() 在 super() 中使用时,如何对其进行初始化?就像以有效的方式跟随,让 Frame 和所有超级相关的颜色都变成红色?

注意:基本上右边的红色框不应该显示,因为 Color(r,g,b,ALPHA);

public class 999 extends Window 
{
  private JLabel label;
  private JButton button;
  private static final Canvas canvas = new Canvas();
  private static final Canvas canvas0 = new Canvas();
  private JLayeredPane layers;

  public 999() 
  {
        super(new Frame());
        // Please make this **TRANSPARENT**
        getOwner().setBackground( new Color(255, 0, 0, 0) ); 

        layers = new JLayeredPane();
        button = new JButton("close");

        this.setLayout (new BorderLayout ());     

        button.setBackground(Color.RED);
        button.setSize(200,200);
        button.setLocation(0,20);
        this.add("North", button);

        JPanel p = new JPanel();
        p.setOpaque(false); // transparent
        p.setBackground( new Color(255, 0, 0, 0) ); // transparent

        p.setSize(300, 200);
        p.setLocation(0, 0);
        p.add(new JButton("Test"));
        layers.add(p, new Integer(1));
        layers.setSize(400,300);
        layers.setLocation(400,50);

        layers.setOpaque(false); // transparent
        layers.setBackground( new Color(255, 0, 0, 0) ); // transparent
        this.add("North", layers);

        canvas.setSize(800,800);
        this.add("North",canvas);
        //AWTUtilities.setWindowOpacity(this, 0.2f); // Error in Linux

    }

    public static void main(String[] args) 
    {
      Window j = new 999();
      j.setVisible(true);
        ...
    }

}

【问题讨论】:

  • 我不确定 999 是否是类的有效名称。虽然我不知道 java...
  • 因为class nameidenitifier,所以“999”不是有效名称。
  • 1) 不要将 Swing 与 AWT 混合使用。 2) 为了尽快获得更好的帮助,请发帖SSCCE
  • @Anbdrew Thompson:你所说的 Swing/AWT 组合是什么意思?特别是帆布? (这是我的罪魁祸首)。
  • 是 Swing'、'AWT' 还是 'mix' 你不明白?有机会看到那个SSCCE吗?

标签: java linux swing user-interface awt


【解决方案1】:

这段代码真的很奇怪。在其他地方创建框架并设置所需的值,然后再将其提供给该对象。或者只是在您的构造函数中进行此调用:

 getOwner().setBackground( new Color(255, 0, 0, 255) );

【讨论】:

  • 这给出错误: super(new Frame(){ getOwner().setBackground( new Color(255, 0, 0, 255) ); });
  • 不,在999类的构造函数中。
  • 请看上面,它不工作,我有红色背景而不是透明的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2012-05-17
  • 2018-05-06
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多