私はこの基本的なJavaアプリケーションを魔法使いdim_x
とdim_y
で表現しています。ウィンドウとその中のキャンバスの寸法を表しています。ユーザーがウィンドウのサイズを変更するときに、これらの値を変更してキャンバスに描かれる内容が縮小/拡大されるようにするにはどうすればよいですか?このJavaアプリケーションのサイズが変更されたときにどうすればいいですか?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MLM extends Canvas {
static int dim_x = 720;
static int dim_y = 480;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Canvas canvas = new MLM();
canvas.setSize(dim_x, dim_y);
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
public void paint(Graphics g) {
// some stuff is drawn here using dim_x and dim_y
}
}
EDIT:Binyaminの答え、次の 私が働くこれを追加しようとしましたが、それを行うには良い方法はありますか?のように、canvas
を静的にしないで、多分?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MLM extends Canvas {
static int dim_x = 720;
static int dim_y = 480;
static Canvas canvas;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas = new MLM();
canvas.setSize(dim_x, dim_y);
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
frame.addComponentListener(new ComponentListener(){
public void componentResized(ComponentEvent e) {
Dimension d = canvas.getSize();
dim_x = d.width;
dim_y = d.height;
}
public void componentHidden(ComponentEvent e) {}
public void componentMoved(ComponentEvent e) {}
public void componentShown(ComponentEvent e) {}
});
}
public void paint(Graphics g) {
// some stuff is drawn here using dim_x and dim_y
}
}
+1しかし、このメソッドは 'componentResized()'と呼ばれています – AlexR
ああ、あなたもそうです、アンドロイドの慣習にもあてはまります:) – MByD
これは素晴らしいです。ありがとう@ビニャミンSharet! Iv'eは残りのコードを扱うようにあなたの提案を得ましたが(上記の編集を参照)、これを行う良い方法がありますか?のように、 'canvas'を静的にしないで、おそらく? –