CTIGERS 2009-07-20 09:34
浏览 204
已采纳

求教,为什么我这窗体的图片显示不出来,窗体大小也不按参数变

。。我想让窗体上面显示一张类似网页里logo的图片。。下面是一个文本框和一个用来打开文件的按钮,那个actionPerformed函数是用来获取文件路径的,重点是那个窗体的大小我设置了400*400但实际大小没有变化,而那张放在北边的图片也显示不出来,请指教,代码如下:

package ft;

import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyTest extends JFrame implements ActionListener{
JButton jbtn = null;
JTextField jtf = null;
JPanel bp1 = new JPanel();
JPanel bp2 = new JPanel();

public MyTest(){
    this.setLayout(new FlowLayout());
    jbtn = new JButton("打开..");
    jbtn.addActionListener(this);
    jtf = new JTextField(30);

    ImageP p = new ImageP();
    bp2.add(p);

    bp1.add(jtf);
    bp1.add(jbtn);

    this.add(bp1,BorderLayout.SOUTH);
    this.add(bp2,BorderLayout.NORTH);


    this.setSize(400,400);
    this.setVisible(true);
    this.pack();
}
public void actionPerformed(ActionEvent e) {
    if(e.getSource().equals(jbtn)){

        int response = 1;
        do{

            FileDialog fd = new FileDialog(this);
            fd.setVisible(true);


            String a = fd.getDirectory()+fd.getFile();
            System.out.println(a);
            this.setVisible(false);
            Object[] options = {"是,我要继续生成新XML","否,我想退出程序"};
            response=JOptionPane.showOptionDialog(this, "XML已生成,是否继续生成新XML?", "亿阳报表自动化系统",JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);


            if(response == 1)
            { 
                System.exit(0);
            }

        }while(response == 0);      

    }
}
public static void main(String[] args){



    new MyTest();

}

}

class ImageP extends JPanel{

JPanel bp2 = new JPanel();
private Image image;


public ImageP(){
    try{
        image = ImageIO.read(new File("E:\\未命名2.JPG"));
    }catch(IOException e){
        e.printStackTrace();
    }
    if(image == null){
        System.out.println("222");
    }else{
        System.out.println("333");
    }

}

public void ImageP2(Graphics g){
    super.printComponents(g);
    g.drawImage(image,0,0,null);
}

}

  • 写回答

1条回答 默认 最新

  • pjuneye 2009-07-20 09:49
    关注

    初看了下LZ的代码,可能有几个问题(时间长了不确定),请LZ检查

    1. [code="java"] this.setSize(400,400); this.setVisible(true); [color=red]this.pack(); [/color] [/code]

    这里的this.pack(); 貌似有把窗口放到合适大小的意思.这应该是LZ窗口没有按预期显示大小的原因.是不是有个show方法的.

    2.[code="java"]
    class ImageP extends JPanel{

    JPanel bp2 = new JPanel();
    private Image image;

    public ImageP(){
    try{
    image = ImageIO.read(new File("E:\未命名2.JPG"));
    }catch(IOException e){
    e.printStackTrace();
    }
    if(image == null){
    System.out.println("222");
    }else{
    System.out.println("333");
    }

    }

    public void ImageP2(Graphics g){
    super.printComponents(g);
    g.drawImage(image,0,0,null);
    }
    }
    [/code]
    这个类的问题在于,你新建的Image压根就没有放到JPanel上面去.应该以某种方式设置到面板上面去才是.LZ可能想draw上去,可能不行的吧.把它放到JLabel里面设置到JPanel里面去试试看.

    以上是我的看法,LZ请检查.(PS:不一定都对哦. :wink:)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 mac playcover上原神在登录后的加载页面闪退,重新下载原神IPA和playcover均无效
  • ¥20 node-dev能不能离线安装?
  • ¥20 六子棋博弈基于Alpha-Beta剪枝搜索算法的优化
  • ¥15 mlx90393用stm32f1的单片机使用软件i2c通信一直报错
  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?