2

私はこれを持っています:

import javax.swing.*;
import java.awt.Canvas;
import java.awt.image.BufferedImage;

public class test extends Canvas{

public static JFrame frame;
public static int WIDTH = 800;
public static int HEIGHT = 600;
public static BufferedImage img;
public static int[] pixels;
public static boolean running=true;

public static void main(String[] a){

        img = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
        frame = new JFrame("WINDOWw");
        frame.add(new JLabel(new ImageIcon(img)));
        frame.pack();
        frame.setVisible(true);
        frame.setSize(WIDTH, HEIGHT);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

その黒い画像がフレームの自動中央に配置されるのを止めるにはどうすればよいですか?

4

2 に答える 2

5

それが唯一のコンポーネントのようで、フレームを埋めます。FlowLayoutそれが唯一のコンポーネントである場合は、テキストの配置またはを使用します。

TestLabelPlacement-FlowLayout

import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.image.BufferedImage;

public class TestLabelPlacement {

    public static JFrame frame;
    public static int WIDTH = 200;
    public static int HEIGHT = 150;
    public static BufferedImage img;

    public static void main(String[] a){

        img = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
        frame = new JFrame("Window");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setLayout(new FlowLayout(FlowLayout.LEADING));
        frame.add(new JLabel(new ImageIcon(img)));
        frame.pack();
        frame.setVisible(true);
        // WRONG!  That is the size of the image, not the frame!
        //frame.setSize(WIDTH, HEIGHT);
    }
}
于 2012-06-29T11:19:30.293 に答える
2

JFrame はデフォルトのレイアウトとして BorderLayoutを持ち、フレームに追加するコンポーネントが 1 つだけの場合、デフォルトではフレームの中央に配置されます。

GroupLayoutを使用して、コンポーネントを目的の場所に配置できます。GroupLayout は 2005 年に NetBean 開発チームによって開発され、現在は Google から無料で入手できる GUI ビルディングである Window Builder Pro で利用できます。

于 2012-06-29T11:24:32.643 に答える