Google Tag Manager

2011/02/03

Translucent JInternalFrame (Nimbus)

Code

JPanel p1 = new JPanel();
p1.setOpaque(false);

JPanel p2 = new JPanel() {
  @Override protected void paintComponent(Graphics g) {
    // super.paintComponent(g);
    g.setColor(new Color(100, 50, 50, 100));
    g.fillRect(0, 0, getWidth(), getHeight());
  }
};

JPanel p3 = new JPanel() {
  @Override protected void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    // g2.setPaint(new Color(100, 120, 100, 100));
    g2.setPaint(texture);
    g2.fillRect(0, 0, getWidth(), getHeight());
  }
};

protected JInternalFrame createFrame(JPanel panel) {
  MyInternalFrame frame = new MyInternalFrame();
  if (panel != null) {
    frame.setContentPane(panel);
    // JButton button = new JButton("button");
    // button.setOpaque(false);
    panel.add(new JLabel("label"));
    panel.add(new JButton("button"));
  }
  desktop.add(frame);
  frame.setOpaque(false);
  frame.setVisible(true);
  // ...

References

6 comments:

  1. is this brown square background the correct button background behaviour?

    https://picasaweb.google.com/lh/photo/jpjqW6OXUbZr-UNEWXoeNw?feat=directlink

    ReplyDelete
  2. Oops, bit ugly...
    I think this will need to call JPanel#setOpaque(false):
    JPanel p2 = new JPanel() {
    @Override public void paintComponent(Graphics g) {
    g.setColor(new Color(100,50,50,100));
    g.fillRect(0,0,getWidth(), getHeight());
    }
    };
    p2.setOpaque(false);

    ReplyDelete
  3. la Nippa,
    Example.jnlp, src.zip update. Thank you for point out.

    ReplyDelete