Мне нужно организовать поддержку скалирования интерфейса. В интерфейсе присутствуют кнопки с иконками и JPanel, на котором они лежат.
Проблема в том, что кнопка принимает размеры иконки и при скалировании иконка размывается. Я пробовал ставить в PaintComponent скалирование меньше, чтобы скалирование кнопки на скалирвоание системы дало 1, но в этом случае JPanel сохраняет первоначальные размеры и получается что панель выглядит заметно больше, чем требовалось бы. Пробовал поставить такое же скалирование что и в кнопке, в JPanel , но тога теряется смысл скалирования кнопки, ибо уже визуально идет уменьшение. Получается что чтобы не сделал - порочный круг, уже не знаю куда смотреть даже.
Собственно получается что-то типо этого:
Причем кнопка тыкается даже в красной зоне. Почему так происходит - понятно, JPanel не уменьшается. Но как сделать так, чтобы это все работало нормально, я уже не знаю. Код ниже, хотя там ничего интересного нету. Спасибо.
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();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть консоль, которая реализована на TextFlowВ ней меняется цвет, в зависимости от типа сообщения (ERROR - red, WARNING - yellow и тд)
Поискав на просторах интернета, на данный момент не смог найти ответа на свой вопрос, хотя в принципе его должны были неоднократно задавать
Имеется строка вида {"asdasd":"adsasd"}Формируется данная строка с помощью символа экранирования
Имеется класс, реализующий поиск ближайших мест на карте путем отправки запроса и получения результатов в jsonЗапросы отправляются и получаются...