Я довольно новичок в программировании, и я не понимаю, использует ли Java независимые пиксели или нормальные пиксели. Я создал программу и попытался изменить разрешение экрана (3840x2160 / 2048x1152 / 1920x1080). Но я получаю действительно странные результаты (я читал о dpi и коэффициентах, чтобы перейти от dp к px, но на самом деле не понял этого). Если бы вы могли подробно объяснить мне, как очень глупому человеку, который почти не имел опыта в Java, как работает pixel logi c в Java, я был бы очень признателен. Спасибо!)
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.Timer;
public class Game extends Canvas {
public static final int WIDTH = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
public static final int HEIGHT = 50;
private double scale = 1.5;
public JFrame frame;
public Game() {
Dimension size = new Dimension((int) (WIDTH * scale), (int) (HEIGHT * scale));
setPreferredSize(size);
System.out.println("1 " + Toolkit.getDefaultToolkit().getScreenSize());
frame = new JFrame();
System.out.println("2 " + Toolkit.getDefaultToolkit().getScreenSize());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.add(this);
frame.pack();
Timer timer = new Timer(500, new SizeCheck());
timer.start();
}
public static void main(String[] args) {
new Game();
}
class SizeCheck implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println(Game.WIDTH);
System.out.println(Toolkit.getDefaultToolkit().getScreenSize().getWidth());
System.out.println(Toolkit.getDefaultToolkit().getScreenResolution());
}
}
}