Java Swing + ScaleJAVA

Программисты JAVA общаются здесь
Anonymous
Java Swing + Scale

Сообщение Anonymous »

Мне нужно создать приложение с масштабированием интерфейса. У меня есть кнопка с значком внутри и JPanel, которая удерживает эту кнопку. Проблема в том, что когда шкала включен - значок размыта и для его исправления, я использую снижение в PaintComponent. Когда в результате включается масштаб системы, в результате у меня есть нормальное изображение. Но у JPanel все еще масштабированный размер. Я тоже попытался переопределить JPanel PaintComponent, но в результате у меня были слишком маленькие кнопки, потому что на кнопке и Donwscale на Jpanel Workeather. Я не могу использовать масштаб только от JPanel, когда я нажимаю кнопку, она снова понадобится масштабированный размер, а изображение снова размыто.
Это простой пример. < /p>

< /p>

и код: < /p>

public class Test{

public static void main(String[] args) throws Exception{

System.setProperty("sun.java2d.uiScale", "1.5");
JFrame j = new JFrame();
Image img = ImageIO.read(new File("D:\\1.png"));
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setPreferredSize(new Dimension(300, 150));
j.setVisible(true);
j.setLocationRelativeTo(null);
j.setLayout(new BorderLayout());

img = img.getScaledInstance((int) (60 * 1.5),(int) (60 * 1.5),Image.SCALE_DEFAULT);

JToggleButton tb = new JToggleButton(){
@Override
protected void paintComponent(Graphics g) {

Graphics2D g2 = (Graphics2D) g;
g2.scale(0.67,0.67);
super.paintComponent(g2);
}
};
tb.setIcon(new ImageIcon(img));

JToggleButton tb2 = new JToggleButton(){
@Override
protected void paintComponent(Graphics g) {

Graphics2D g2 = (Graphics2D) g;
g2.scale(0.67,0.67);
super.paintComponent(g2);
}
};
tb2.setIcon(new ImageIcon(img));

JPanel jPanel = new JPanel(){

};
jPanel.setLayout(new GridLayout(1,1));
jPanel.add(tb);
jPanel.setBackground(Color.RED);

JPanel content = new JPanel();
content.setLayout(new FlowLayout());
content.add(jPanel);

j.setContentPane(content);
j.pack();
}
< /code>

}
Я использую Java10.
Спасибо. < /p>

Подробнее здесь: https://stackoverflow.com/questions/515 ... g-ui-scale

Вернуться в «JAVA»