Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过覆盖paintComponent()缩放JLabel 考虑一下这个小例子: 导入java.awt.Color; 导入java.awt.Graphics; 导入java.awt.Graphics2D; 导入java.awt.event.mouseweelEvent; 导入java.awt.event.MouseWheelListener; 导入java.util.ArrayList; 导入javax.swing.JFrame; 导入javax.swing.JLabel; 导入javax.swing.JPanel; 公共类Test2扩展JFrame实现MouseWheelListener{ ArrayList lista=新的ArrayList(); JPanel p; 双d=0.1; Test2(){ p=新的JPanel(); _JLabel j=new JLabel(“你好”); j、 set不透明(true); j、 挫折地面(颜色:黄色); p、 加(j); p、 挫折背景(颜色:蓝色); 加(p); 此.setVisible(true); 这个。设置大小(400400); addMouseWheelListener(此); setDefaultCloseOperation(关闭时退出); } 公共静态void main(字符串参数[]){ 新Test2(); } 私有类JLabel扩展了JLabel{ _JLabel(字符串s){ 超级(s); } 受保护组件(图形g){ d+=0.01; Graphics2D g2d=(Graphics2D)g; g2d.比例(d,d); setMaximumSize(空); setPreferredSize(空); setMinimumSize(空); 超级油漆组件(g2d); System.out.println(“d=“+d”); } } 已移动公共无效鼠标滚轮(鼠标滚轮事件e){ 这个。重新绘制(); } }_Java_Swing_Zooming_Jlabel_Paintcomponent - Fatal编程技术网

通过覆盖paintComponent()缩放JLabel 考虑一下这个小例子: 导入java.awt.Color; 导入java.awt.Graphics; 导入java.awt.Graphics2D; 导入java.awt.event.mouseweelEvent; 导入java.awt.event.MouseWheelListener; 导入java.util.ArrayList; 导入javax.swing.JFrame; 导入javax.swing.JLabel; 导入javax.swing.JPanel; 公共类Test2扩展JFrame实现MouseWheelListener{ ArrayList lista=新的ArrayList(); JPanel p; 双d=0.1; Test2(){ p=新的JPanel(); _JLabel j=new JLabel(“你好”); j、 set不透明(true); j、 挫折地面(颜色:黄色); p、 加(j); p、 挫折背景(颜色:蓝色); 加(p); 此.setVisible(true); 这个。设置大小(400400); addMouseWheelListener(此); setDefaultCloseOperation(关闭时退出); } 公共静态void main(字符串参数[]){ 新Test2(); } 私有类JLabel扩展了JLabel{ _JLabel(字符串s){ 超级(s); } 受保护组件(图形g){ d+=0.01; Graphics2D g2d=(Graphics2D)g; g2d.比例(d,d); setMaximumSize(空); setPreferredSize(空); setMinimumSize(空); 超级油漆组件(g2d); System.out.println(“d=“+d”); } } 已移动公共无效鼠标滚轮(鼠标滚轮事件e){ 这个。重新绘制(); } }

通过覆盖paintComponent()缩放JLabel 考虑一下这个小例子: 导入java.awt.Color; 导入java.awt.Graphics; 导入java.awt.Graphics2D; 导入java.awt.event.mouseweelEvent; 导入java.awt.event.MouseWheelListener; 导入java.util.ArrayList; 导入javax.swing.JFrame; 导入javax.swing.JLabel; 导入javax.swing.JPanel; 公共类Test2扩展JFrame实现MouseWheelListener{ ArrayList lista=新的ArrayList(); JPanel p; 双d=0.1; Test2(){ p=新的JPanel(); _JLabel j=new JLabel(“你好”); j、 set不透明(true); j、 挫折地面(颜色:黄色); p、 加(j); p、 挫折背景(颜色:蓝色); 加(p); 此.setVisible(true); 这个。设置大小(400400); addMouseWheelListener(此); setDefaultCloseOperation(关闭时退出); } 公共静态void main(字符串参数[]){ 新Test2(); } 私有类JLabel扩展了JLabel{ _JLabel(字符串s){ 超级(s); } 受保护组件(图形g){ d+=0.01; Graphics2D g2d=(Graphics2D)g; g2d.比例(d,d); setMaximumSize(空); setPreferredSize(空); setMinimumSize(空); 超级油漆组件(g2d); System.out.println(“d=“+d”); } } 已移动公共无效鼠标滚轮(鼠标滚轮事件e){ 这个。重新绘制(); } },java,swing,zooming,jlabel,paintcomponent,Java,Swing,Zooming,Jlabel,Paintcomponent,当我滚动鼠标滚轮时,JLabel的大小会增加,变量d会打印出来。但是,当它达到实际大小(d=1)时,只有文本继续缩放。如何使背景继续缩放?您不应该在绘制方法中修改首选的/min/max大小,这可能会产生意外的结果(导致另一次重新绘制) 问题是父布局没有用于确定组件大小的参考。也就是说,首选/in/max大小实际上是根据字体信息计算的&该信息没有更改 因此,虽然“看起来”组件正在调整大小,但其实际大小没有改变 尝试根据原始字体大小进行缩放 AffineTransformation af = Aff

当我滚动鼠标滚轮时,JLabel的大小会增加,变量d会打印出来。但是,当它达到实际大小(d=1)时,只有文本继续缩放。如何使背景继续缩放?

您不应该在绘制方法中修改首选的/min/max大小,这可能会产生意外的结果(导致另一次重新绘制)

问题是父布局没有用于确定组件大小的参考。也就是说,首选/in/max大小实际上是根据字体信息计算的&该信息没有更改

因此,虽然“看起来”组件正在调整大小,但其实际大小没有改变

尝试根据原始字体大小进行缩放

AffineTransformation af = AffineTranfrmation.getScaleInstance(scale, scale);
Font font = originalFont.deriveFont(af);
setFont(font);

invalidate();
repaint();
当然,如果用户更改字体,您会遇到什么问题,但只要稍加标记,您应该能够克服这个问题

AffineTransformation af = AffineTranfrmation.getScaleInstance(scale, scale);
Font font = originalFont.deriveFont(af);
setFont(font);

invalidate();
repaint();