为什么有时出来窗体后必须拉大一下窗体组件才能显示出来? 如题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序中缺了个repaint()语句!所以只有在从最小化到最大化或者··就是系统自动调用update()完成刷新。如果加上repaint()语句,它会重新绘制该组件! import java.awt.*;import java.awt.event.*;import javax.swing.*;public class T extends JFrame{ Image im; Panel_ p; public T() { setSize(500,400); setVisible(true); //setLayout(new BorderLayout()); im=Toolkit.getDefaultToolkit().getImage("fly.jpg"); p=new Panel_(im); add(p); } public static void main(String args[]) { new T(); }}class Panel_ extends JPanel{ Image image; public Panel_(Image im) { image=im; } public void paint(Graphics g) { g.drawImage(image,10,10,200,200,null); }} 把setVisible(true);放到public T()最后看看 如果不使用JPanel,而是直接在JFrame中显示图片,是可以直接显示出来的!但是如果使用JPanel来绘图形,好像是没有一个简易的方法,我在这里顶一下,期待高手的出现:直接在JFrame中显示,是很简单的:import java.awt.*;import javax.swing.ImageIcon;import javax.swing.JFrame;public class Ttest extends JFrame { public static void main(String[] args) { Ttest test = new Ttest(); test.setSize(600,600); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); test.run(); } private static final int FONT_SIZE = 24; private Image im; public void run() { im = new ImageIcon("fly.gif").getImage(); repaint();} public void paint(Graphics g) { g.drawImage(im, 0, 0, null); }} 以前也碰到过这样的情况,解决一下:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class T extends JFrame{Image im;Panel_ p;public T(){setSize(500,400);//setLayout(new BorderLayout());im=Toolkit.getDefaultToolkit().getImage("fly.jpg");p=new Panel_(im);add(p);setVisible(true);}public static void main(String args[]){new T();}}class Panel_ extends JPanel{Image image;public Panel_(Image im){image=im;}public void paint(Graphics g){g.drawImage(image,10,10,200,200,null);}}这样就可以了,原理是:setVisible(true);后就paint(),然后.add之后却没有及时repaint(),把setVisible(true);放到后面就可以了。或者在最后再加一个:this.repaint();也可以。 如果以上方法不能解决(可能性极小,几乎不可能):在T()的最后一行加一个:invalidate(); 刚解决这个问题,用repaintUI() java对象的比较 菜鸟求助 关于Robot被禁止 一个小程序,我看了一下觉得很简单,真教我写代码还真是问题多。哪个帮写下?给分呵呵 一个关于APPLET响应事件的问题 如何使对JTree的节点只能单选,屏蔽多选 偶从.net投身java了! 十万火急求救,jdbtable中的乱码问题? JTable的刷新问题! java.sql.SQLException: 列名无效 [问题点数:25分,结帖人zshzyh] 收藏 如何从ACSII转为字符??? 一道考试题目.请高手指教
import java.awt.event.*;
import javax.swing.*;
public class T extends JFrame
{
Image im;
Panel_ p;
public T()
{
setSize(500,400);
setVisible(true);
//setLayout(new BorderLayout());
im=Toolkit.getDefaultToolkit().getImage("fly.jpg");
p=new Panel_(im);
add(p);
}
public static void main(String args[])
{
new T();
}
}
class Panel_ extends JPanel
{
Image image;
public Panel_(Image im)
{
image=im;
}
public void paint(Graphics g)
{
g.drawImage(image,10,10,200,200,null);
}
}
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;public class Ttest extends JFrame { public static void main(String[] args) { Ttest test = new Ttest();
test.setSize(600,600);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
test.run();
} private static final int FONT_SIZE = 24;
private Image im; public void run() {
im = new ImageIcon("fly.gif").getImage();
repaint();
}
public void paint(Graphics g) {
g.drawImage(im, 0, 0, null);
}}
import java.awt.event.*;
import javax.swing.*;
public class T extends JFrame
{
Image im;
Panel_ p;
public T()
{
setSize(500,400);
//setLayout(new BorderLayout());
im=Toolkit.getDefaultToolkit().getImage("fly.jpg");
p=new Panel_(im);
add(p);
setVisible(true);
}
public static void main(String args[])
{
new T();
}
}
class Panel_ extends JPanel
{
Image image;
public Panel_(Image im)
{
image=im;
}
public void paint(Graphics g)
{
g.drawImage(image,10,10,200,200,null);}
}这样就可以了,原理是:setVisible(true);后就paint(),然后.add之后却没有及时repaint(),把setVisible(true);放到后面就可以了。或者在最后再加一个:
this.repaint();
也可以。
在T()的最后一行加一个:invalidate();