Swing中实现了Icon接口的类的异常问题 什么时候结束这个paintIcon递归?看不出来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 原来是这个原因应该是icon.paintIcon(c, g2d, x, y);感谢大哥!!!还有个问题,运行的时候并没有缩放成功,是什么原因呢 JPanel panel_1 = new JPanel(); frame.getContentPane().add(panel_1); JLabel lblNewLabel = new JLabel("New label"); ScaleIcon ii = new ScaleIcon(new ImageIcon(JLoginWindow.class.getResource("/img/\u6EE1\u6C49\u5168\u5E2D.jpg"))); lblNewLabel.setIcon(ii); panel_1.setSize(200, 100); lblNewLabel.setSize(200, 100); panel_1.add(lblNewLabel); 上面的代码,在调试的时候,到了ScaleIcon的paint方法里的时候,发现获取到的C的尺寸并不是我设置的200,100,还是和我的图片尺寸大小一样·~ 是不是先设置的图片,后设置c的大小,顺序倒了吧?我现在改了下代码,不把尺寸设死,用了布局管理器,让组件能跟随窗体变化,现在没有设置组件尺寸的地方了,缩放还是不行把代码贴全 JPanel panelImage = new JPanel(); GridBagConstraints gbc_panelImage = new GridBagConstraints(); gbc_panelImage.gridheight = 2; gbc_panelImage.insets = new Insets(0, 0, 0, 5); gbc_panelImage.fill = GridBagConstraints.BOTH; gbc_panelImage.anchor = GridBagConstraints.WEST; gbc_panelImage.gridx = 0; gbc_panelImage.gridy = 0; frame.getContentPane().add(panelImage, gbc_panelImage); JLabel labelImage = new JLabel(""); ScaleIcon icon = new ScaleIcon(new ImageIcon( JLoginWindow.class .getResource("/img/\u6EE1\u6C49\u5168\u5E2D.jpg"))); labelImage.setIcon(icon); panelImage.add(labelImage); labelImage.setBorder(BorderFactory.createLineBorder(Color.red));我刚刚加了最后一句,把边框显示出来,发现边框显示不全,好像是被图片“撑大了”的感觉。 import java.awt.Image;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;public class Test25 extends JFrame { public Test25() { int width = 100; int height = 100; ImageIcon image = new ImageIcon("c:\\d.png"); image.setImage(image.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); JLabel label = new JLabel(image); getContentPane().add(label); setBounds(100, 100, 200, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new Test25(); }} 非常感谢,只是这里的getScaledInstance中的宽高都是固定的,我试了下改成获取Panel或者label的宽高都是0,看来其尺寸是运行时才确定的。那这里有没有什么办法解决这个问题? java急急-模拟栈的解构 寻一个jdk下载地址!! 这道题应该怎么分析并改正错误呢? 一个eclipse操作的问题,还是不清楚怎么操作 我要实现排序功能,但发现不知道怎么输入若干任意整数到一数组上并打印出来. java数据类型哪些是有符号哪些是无符号的? 国际化 中文显示乱码问题 在Linux下怎么配置JDK 在线等候 MS SQL的插入语句(JAVA中)(可以多补分,只要能解决) 小问题 eclipse创建项目窗口项目名文本框无法输入 【求助】一个关于TreeMap的问题
原来是这个原因
应该是icon.paintIcon(c, g2d, x, y);感谢大哥!!!还有个问题,运行的时候并没有缩放成功,是什么原因呢 JPanel panel_1 = new JPanel();
frame.getContentPane().add(panel_1);
JLabel lblNewLabel = new JLabel("New label");
ScaleIcon ii = new ScaleIcon(new ImageIcon(JLoginWindow.class.getResource("/img/\u6EE1\u6C49\u5168\u5E2D.jpg")));
lblNewLabel.setIcon(ii);
panel_1.setSize(200, 100);
lblNewLabel.setSize(200, 100);
panel_1.add(lblNewLabel);
是不是先设置的图片,后设置c的大小,顺序倒了吧?
我现在改了下代码,不把尺寸设死,用了布局管理器,让组件能跟随窗体变化,现在没有设置组件尺寸的地方了,缩放还是不行把代码贴全 JPanel panelImage = new JPanel();
GridBagConstraints gbc_panelImage = new GridBagConstraints();
gbc_panelImage.gridheight = 2;
gbc_panelImage.insets = new Insets(0, 0, 0, 5);
gbc_panelImage.fill = GridBagConstraints.BOTH;
gbc_panelImage.anchor = GridBagConstraints.WEST;
gbc_panelImage.gridx = 0;
gbc_panelImage.gridy = 0;
frame.getContentPane().add(panelImage, gbc_panelImage); JLabel labelImage = new JLabel("");
ScaleIcon icon = new ScaleIcon(new ImageIcon(
JLoginWindow.class
.getResource("/img/\u6EE1\u6C49\u5168\u5E2D.jpg")));
labelImage.setIcon(icon);
panelImage.add(labelImage);
labelImage.setBorder(BorderFactory.createLineBorder(Color.red));我刚刚加了最后一句,把边框显示出来,发现边框显示不全,好像是被图片“撑大了”的感觉。
import javax.swing.JFrame;
import javax.swing.JLabel;public class Test25 extends JFrame { public Test25() {
int width = 100;
int height = 100;
ImageIcon image = new ImageIcon("c:\\d.png");
image.setImage(image.getImage().getScaledInstance(width, height,
Image.SCALE_DEFAULT));
JLabel label = new JLabel(image);
getContentPane().add(label);
setBounds(100, 100, 200, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
} public static void main(String[] args) {
new Test25();
}
}
看来其尺寸是运行时才确定的。
那这里有没有什么办法解决这个问题?