import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;public class ImageOne {
    public static void main(String[] args) {
        ImageFrame f = new ImageFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}
class ImageFrame extends JFrame {
    public ImageFrame() {
        setTitle("Image");
        setSize(600, 400);
        ImagePanel ip = new ImagePanel();
        add(ip);
    }
}
class ImagePanel extends JPanel {
    private Image image;
    public ImagePanel() {
        try {
            image = ImageIO.read(new File("ball.png"));
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if(image == null)
            return;
        int iw = image.getWidth(this);
        int ih = image.getHeight(this);
        g.drawImage(image, 0, 0, null);
        for(int i = 0; i*iw <= getWidth(); i++) {
            for(int j = 0; j*ih <= getHeight(); j++) {
                if(i + j > 0) {
                    g.copyArea(0, 0, iw, ih, i*iw, j*ih);
                }
            }
        }
    }
}
我设置的是600,400的 程序界面  为什么出来的程序界面是可以变大变小的呢?
我照书上写的 书上的图上没有最大最小化的按钮啊  是不是跟JAVA版本有关系?
 

解决方案 »

  1.   

    setSize(600, 400); 
    setResizable(false);
      

  2.   

    import java.awt.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.imageio.*;
    import javax.swing.*;public class ImageOne {
        public static void main(String[] args) {
            ImageFrame f = new ImageFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setVisible(true);
        }
    }
    class ImageFrame extends JFrame {
        public ImageFrame() {
            super("Image");
            setSize(600, 400);
    setUndecorated( true ); // 去掉标题栏
    setResizable(false); // 
    setDefaultLookAndFeelDecorated(true);
    getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
            ImagePanel ip = new ImagePanel();
            add(ip);
        }
    }
    class ImagePanel extends JPanel {
        private Image image;
        public ImagePanel() {
            try {
                image = ImageIO.read(new File("ball.png"));
            }
            catch(IOException e) {
                e.printStackTrace();
            }
        }
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            if(image == null)
                return;
            int iw = image.getWidth(this);
            int ih = image.getHeight(this);
    Graphics2D g2d = (Graphics2D)g;
    TexturePaint texture = new TexturePaint((BufferedImage)image,new Rectangle(0,0,iw,ih));
    g2d.setPaint(texture);
    g2d.fillRect(0,0,getWidth(),getHeight());
        }

      

  3.   

    这个很复杂啊,涉及到java 2d绘图问题,你的重写paint方法,每次最大最小时都要重绘组件,
      

  4.   

    setResizable(false);就这么简单 没那么复杂
      

  5.   

    谢谢 不过书上那种根本就没有变大变小的按钮 而不是用Resizablez这个停用按钮
    这是为什么呢?