Java jFrame不';不要显示图像
所以,伙计们,我想使用代码,我必须设置jFrame的背景,而不添加任何来自另一个类的内容(比如在jPanel中使用此代码,然后将该面板添加到jFrame)。我想做这门课上的每件事。我真的不知道该怎么办,所以我尝试了一下,但这段代码没有显示图像Java jFrame不';不要显示图像,java,swing,Java,Swing,所以,伙计们,我想使用代码,我必须设置jFrame的背景,而不添加任何来自另一个类的内容(比如在jPanel中使用此代码,然后将该面板添加到jFrame)。我想做这门课上的每件事。我真的不知道该怎么办,所以我尝试了一下,但这段代码没有显示图像 import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JFrame; public class panel ex
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class panel extends JFrame{
Image img;
public void paintComponent(Graphics g){
super.paintComponents(g);
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
g.dispose();
}
public panel(){
img=new ImageIcon(getClass().getResource("bg_login.jpg")).getImage();
setExtendedState(JFrame.MAXIMIZED_BOTH);
pack();
setVisible(true);
}
public static void main(String[] args){
new panel();
}
}
jframe
没有paintcomponent()
方法,因为它不是一个jcomponent,而是一个容器。您可以制作一个面板,然后将paintcomponent
方法setcontentpane
的jframe
放在该面板上
范例
public class panel extends JPanel {
Image img;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (img != null) {
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
}
// g.dispose();
}
public panel() {
img=new ImageIcon(getClass().getResource("bg_login.jpg")).getImage();
}
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
panel panel = new panel();
jFrame.setContentPane(panel);
jFrame.pack();
jFrame.setVisible(true);
}
}
将
@Override
添加到paintComponent
方法以查看惊喜…不,魔法不起作用:P当我添加@Override时,它会在paintComponent下显示一条红线。JFrame没有paintComponent
方法我试图将paintComponent更改为paintComponents红线没有出现,但仍然没有背景,好吗@FastSnail那么我能做什么呢?回答编辑:永远不要处理已传递到paint或paintComponent方法中的图形对象,因为这会破坏绘制链,并有副作用或NPE的风险。另外super.paintComponents
更改为super.paintComponent
,并添加了一个空检查。thnx dude不想使用jpanel,但我想这是wt我必须要做的:D thnx(Y)@NelsonJohn如果不添加更多组件,也可以使用jlable