我有一个主Panel,内部有一个背景Panel:bgPanel
bgPanel内部增加了两个子panel,可是界面显示后,增加的两个子Panel并不显示,只有当鼠标移动过某个组件的位置,比如一个JButton的位置时,该JButton才显示,我缩放窗口,repaint,revalidate都试过了,没用。注:背景Panel内部重载了paint方法,这个方法绘制了一个全屏的背景图,新增加的其他panel都在背景图中间区域,不知道是不是这个原因。请问解决办法?多谢了!
bgPanel内部增加了两个子panel,可是界面显示后,增加的两个子Panel并不显示,只有当鼠标移动过某个组件的位置,比如一个JButton的位置时,该JButton才显示,我缩放窗口,repaint,revalidate都试过了,没用。注:背景Panel内部重载了paint方法,这个方法绘制了一个全屏的背景图,新增加的其他panel都在背景图中间区域,不知道是不是这个原因。请问解决办法?多谢了!
楼主【tainy_zhang】截止到2008-06-27 10:09:35的历史汇总数据(不包括此帖):
发帖数:6 发帖分:450
结贴数:5 结贴分:400
未结数:1 未结分:50
结贴率:83.33 % 结分率:88.89 %
楼主加油
再Panel.updateUI();
Panel.revalidate();
import java.awt.Container;
import java.awt.Dimension;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class SubPanel extends JFrame { private JPanel backPanel = new JPanel(); private JPanel forePanel = new JPanel(); public SubPanel() {
Container contentPane = this.getContentPane();
contentPane.add(backPanel);
backPanel.setSize(300, 300);
backPanel.setBackground(Color.BLUE);
forePanel.setPreferredSize(new Dimension(50, 50));
forePanel.setSize(new Dimension(50, 50));
JButton button = new JButton("JButton");
button.setBackground(Color.RED);
button.setForeground(Color.YELLOW);
forePanel.add(button);
contentPane.add(forePanel);
forePanel.setOpaque(false);
contentPane.setComponentZOrder(forePanel, 0);
} /**
* @param args
*/
public static void main(String[] args) {
SubPanel sp = new SubPanel();
sp.setVisible(true);
sp.setSize(300, 300);
sp.setDefaultCloseOperation(EXIT_ON_CLOSE);
}}
重载的paint中记得加上super.paint(g)这一句
这类问题,不帖代码,只能凭感觉说话,是帮不了多少忙的
××××××××××××××××××××××××××××××
public void paint(Graphics g)
{
super.paint(g);
if(img != null)
g.drawImage(img,0,0,this);
}
××××××××××××××××××××××××××××××
这个img倒是绘制正常了,可是背景panel上面增加的其他Panel无法正常显示,鼠标移过才会显示出来
在paint方法中调用了paintComponents方法即可
感觉很别扭,有其他方法吗?
{
super.paint(g);
if(img != null)
g.drawImage(img,0,0,this);
super.repaint();}
以前没有注意过这绘制内部组件的方法.