import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TestJDesktopPane
{
JFrame frame;
JDesktopPane desktopPane;
JLabel backLabel;
ImageIcon icon;
public TestJDesktopPane()
{
frame = new JFrame("主面板");
desktopPane = new JDesktopPane(); //虚拟桌面
backLabel = new JLabel(); //背景图标
icon = new ImageIcon("e:/Tulips.jpg");
frame.setBounds(0,0,800,600);
backLabel.setIcon(icon);
frame.addComponentListener(new ComponentAdapter(){ //为主面板添加窗口监听器
@Override
public void componentResized(ComponentEvent e)
{
//System.out.println(frame.getWidth());
backLabel.setSize(frame.getWidth(),frame.getHeight());
System.out.println("-----------");
System.out.println(backLabel.getWidth() + " " +icon.getIconWidth());
}
});
desktopPane.add(backLabel,new Integer(Integer.MIN_VALUE));
frame.add(desktopPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args)
{
new TestJDesktopPane();
}
}
对于JLabel背景图标的问题,该添加的监听器也做了,可图片就是不能自动缩放,求解释!!!(背景重绘的不需要)
import java.awt.event.ComponentEvent;import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TestJDesktopPane
{
JFrame frame;
JDesktopPane desktopPane;
JLabel backLabel;
ImageIcon icon;
public TestJDesktopPane()
{
frame = new JFrame("主面板");
desktopPane = new JDesktopPane(); //虚拟桌面
backLabel = new JLabel(); //背景图标
icon = new ImageIcon("e:/Tulips.jpg");
frame.setBounds(0,0,800,600);
backLabel.setIcon(icon);
frame.addComponentListener(new ComponentAdapter(){ //为主面板添加窗口监听器
@Override
public void componentResized(ComponentEvent e)
{
//System.out.println(frame.getWidth());
backLabel.setSize(frame.getWidth(),frame.getHeight());
System.out.println("-----------");
System.out.println(backLabel.getWidth() + " " +icon.getIconWidth());
}
});
desktopPane.add(backLabel,new Integer(Integer.MIN_VALUE));
frame.add(desktopPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args)
{
new TestJDesktopPane();
}
}
对于JLabel背景图标的问题,该添加的监听器也做了,可图片就是不能自动缩放,求解释!!!(背景重绘的不需要)
解决方案 »
- java 实现多线程的2种方法有什么区别?
- java子类父类的关系
- getGraphics()方法的使用
- 一个jatable的用法问题
- 学习JAVA程序编写,应该按什么顺序?
- 请教大家好的JAVA学习书籍!
- 请教如何将axis 部署到tomcat 下,
- !!大送分98分! 请教JAVA中读一个文件的时候 我用file.setReadOnly()后怎么解开?
- 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
- 谁能给我一个最简单的回答,关于事件响应的。
- java 使用registry-3.1.3读取注册表字符串中文的乱码问题? 真心求助!!!急求!!正确的,分全给!
- java代码出现异常,空指针
如果要图片尺寸改变,那么显示的本身就不是原图,而是做了修改后的图。那么就应该都这样图片的流然后按比例输出,背景重绘就是实现的这个功能,而该这功能你没添加。
package org.zhangming.swing;import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TestJDesktopPane
{
JFrame frame;
JDesktopPane desktopPane;
JLabel backLabel;
ImageIcon icon;
Graphics g;
Image image;
public TestJDesktopPane()
{
frame = new JFrame("主面板");
desktopPane = new JDesktopPane(); //虚拟桌面
backLabel = new JLabel(); //背景图标
// icon = new ImageIcon("e:/Tulips.jpg");
frame.setBounds(0,0,800,600);
// backLabel.setIcon(icon);
frame.addComponentListener(new ComponentAdapter(){ //为主面板添加窗口监听器
@Override
public void componentResized(ComponentEvent e)
{
//
//// g = backLabel.getGraphics();
//// g.drawImage(icon.getImage(),0,0,frame.getWidth(),frame.getHeight(),frame);
backLabel.setSize(frame.getWidth(),frame.getHeight());
backLabel.setText("<html><body><image width='" + frame.getWidth() + "'height='" + frame.getHeight() + "'src='" + getClass().getResource("Tulips.jpg") + "'></img></body></html>");
// System.out.println(icon.getIconWidth());
//
}
});
desktopPane.add(backLabel,new Integer(Integer.MIN_VALUE));
frame.add(desktopPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args)
{
new TestJDesktopPane();
}
}
分享一下我的方法(在事件监听器中的代码) icon.setImage(icon.getImage().getScaledInstance(frame.getWidth(),frame.getHeight(),Image.SCALE_DEFAULT));
backLabel.setIcon(icon);
backLabel.setSize(frame.getWidth(),frame.getHeight());