java面板与png背景

时间:2010-10-30 13:10:21

标签: java

我找到了这个链接.. LINK我想要的是一个JPanel,它有一个背景和另一个JPanel,其大小是第一个JPanel的一半,但图像是透明的,带有一个面或一个球在中间.. :)就像链接的截图..是否有可能在Java中编码? :)我只是觉得它喜欢网络编程。只是一种DIV有这个,但我不知道在java .. :)对不起英语不好..:D我有这个作为背景..

package waterKing;

 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;

 @SuppressWarnings("serial")

 public class Main extends JFrame {
MainData data = new MainData();

public static void main(String[] args) {
    Main frmMain = new Main();
    frmMain.setExtendedState(Frame.MAXIMIZED_BOTH);
    frmMain.setVisible(true);

}

public Main() {
    data.tk = getToolkit();
    data.d = data.tk.getScreenSize();

    data.jP = new JPanel() {            
        protected void paintComponent(Graphics g) {
            data.e = getSize();
            data.iI = new ImageIcon("images/mainBG.png").getImage();
            g.drawImage(data.iI,0, 0, data.d.width, data.d.height, null);
            super.paintComponent(g);    
        }                   
    };

    data.jP.setOpaque(false);
    data.jSp = new JScrollPane(data.jP);
    data.jB = new JButton("EXIT");
    data.jB.setBounds(10,10,200,40);
    data.jB.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });
    data.jP.setLayout(null);
    data.jP.add(data.jB);       

    this.setTitle("Water King Inventory System");
    this.setUndecorated(true);
    this.getContentPane();
    this.add(data.jSp);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);

}

 }

我不知道如何添加另一张JPanel,以中间显示此背景alt text

1 个答案:

答案 0 :(得分:1)

  

我不知道如何添加另一张JPanel以在中间显示这个背景

就像向面板添加组件一样。您需要使用布局管理器,然后根据布局管理器的规则正确定位组件。在您的情况下,您可以将背景面板的布局管理器设置为BorderLayout。然后,您可以将带有相应Icon的JLabel添加到BorderLayout的中心。

您需要设置首选大小(或覆盖面板的getPreferredSize()方法,因为您将其添加到滚动窗格。只有当面板的首选大小大于滚动大小时,才会显示滚动条窗格中。

您不应该在paintComponent()方法中读取图像,因为此方法被多次调用。

您不应使用“屏幕尺寸”来确定图像的宽度/高度,因为框架将包含边框。您需要使用面板的大小。

删除所有setBounds()代码。学习使用布局管理器。

对于考虑了大部分建议的通用背景小组,请查看Background Panel