继承PANEL重写paintComponent方法,
这些控制添加在panel上,就不会出现你说的问题了。
重写paint,会出现你说的问题
直接在窗体上添加了背景图片也会出现你说的问题。
下边是例子。
------------------------------------------------------------------------------------
import javax.swing.ImageIcon
public class App extends JFrame {
private JTextField textField
public App() {
getContentPane().setLayout(new BorderLayout(0, 0))
JPanel panel = new ImagePanel()
getContentPane().add(panel)
panel.setLayout(null)
JButton btnNewButton = new JButton("New button")
btnNewButton.setBounds(108, 234, 93, 23)
panel.add(btnNewButton)
textField = new JTextField()
textField.setBounds(214, 176, 96, 19)
panel.add(textField)
textField.setColumns(10)
setSize(460, 350)
setDefaultCloseOperation(EXIT_ON_CLOSE)
setVisible(true)
}
public static void main(String[] args) {
new App()
}
class ImagePanel extends JPanel {
protected void paintComponent(Graphics g) {
super.paintComponent(g)
ImageIcon icon = new ImageIcon("D:\\1.jpg")
g.drawImage(icon.getImage(), 0, 0, null)
}
}
}
ImageIcon img = new ImageIcon("src/images/abc.jpg")//注意图片路径//如果实在拿不准图片的相对路径,可以写绝对路径比如d:\\workspace....\\xx.jpg
通过以下方式设置下背景就可以了:
background = new ImageIcon("images/backImage.png")
backImage = new JLabel(background)
backImage.setBounds(0, 0, background.getIconWidth(),
background.getIconHeight())
backPanel = (JPanel) this.getContentPane()
backPanel.setOpaque(false)
this.getLayeredPane().setLayout(null)
this.getLayeredPane().add(backImage, new Integer(Integer.MIN_VALUE))
backPanel.setLayout(new BorderLayout())
这样就可以把图片放在最下面了,效果图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)