Java 如何根据窗口调整jlabel的大小
我正在使用netbeans设计一个JFrame。 现在当我编译和运行时,它会执行并打开一个窗口 现在的问题是当我最大化窗口时,我希望图像或Jlabel覆盖jframe的宽度Java 如何根据窗口调整jlabel的大小,java,swing,netbeans,jframe,jlabel,Java,Swing,Netbeans,Jframe,Jlabel,我正在使用netbeans设计一个JFrame。 现在当我编译和运行时,它会执行并打开一个窗口 现在的问题是当我最大化窗口时,我希望图像或Jlabel覆盖jframe的宽度 那么我该怎么做呢。Plz HelpJLabel总是以实际大小绘制图标 如果您想要动态缩放图像,则需要进行自定义绘制。基本上,您可以使用如下代码覆盖JComponent的paintComponent(..)方法: super.paintComponent(g); g.drawImage(image, 0, 0, getWid
那么我该怎么做呢。Plz HelpJLabel总是以实际大小绘制图标 如果您想要动态缩放图像,则需要进行自定义绘制。基本上,您可以使用如下代码覆盖JComponent的paintComponent(..)方法:
super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
当然,创建类时需要将图像作为参数传递。它还假定您直接将组件添加到默认情况下使用BorderLayout的内容窗格中
对于更高级或更灵活的解决方案,您可以:
JLabel始终以实际大小绘制图标 如果您想要动态缩放图像,则需要进行自定义绘制。基本上,您可以使用如下代码覆盖JComponent的paintComponent(..)方法:
super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
当然,创建类时需要将图像作为参数传递。它还假定您直接将组件添加到默认情况下使用BorderLayout的内容窗格中
对于更高级或更灵活的解决方案,您可以:
首先停止使用VisualDesigner。现在停下来。立即忘记它的存在。可视化设计器创建不可维护的代码。它们一开始可以节省5分钟,但会让你花上几个小时 现在,看看任何java布局教程。例如,这个: 一旦您阅读并理解了它,请返回到您的应用程序。想想你需要什么样的布局。设计应用程序。实施它。若你们仍然有问题,你们不能在合理的时间内解决自己,再次问更具体的问题
当您对布局有足够的了解,并且想要用大量对话框实现真正的应用程序时,请看一看。首先停止使用visual designer。现在停下来。立即忘记它的存在。可视化设计器创建不可维护的代码。它们一开始可以节省5分钟,但会让你花上几个小时 现在,看看任何java布局教程。例如,这个: 一旦您阅读并理解了它,请返回到您的应用程序。想想你需要什么样的布局。设计应用程序。实施它。若你们仍然有问题,你们不能在合理的时间内解决自己,再次问更具体的问题
如果您对布局有足够的了解,并且希望通过大量对话框实现真正的应用程序,请查看。thanx的建议。。我也在考虑做同样的事情,但是因为时间不够,我想用视觉设计师。但是你是对的,我现在就手工做。使用布局总是一个好主意,但它不能解决问题。无论您使用什么布局管理器,图像都不会自动缩放。@camickr,您说得对。然而,OP应该首先学习一些使用java进行GUI编程的基础知识,然后开始解决他的问题。也许他根本不需要标签。使用java.thanx显示和拉伸图像的方法有很多。。我也在考虑做同样的事情,但是因为时间不够,我想用视觉设计师。但是你是对的,我现在就手工做。使用布局总是一个好主意,但它不能解决问题。无论您使用什么布局管理器,图像都不会自动缩放。@camickr,您说得对。然而,OP应该首先学习一些使用java进行GUI编程的基础知识,然后开始解决他的问题。也许他根本不需要标签。使用java显示和拉伸图像的方法有很多。我不擅长摆动。因此我使用visual designer.Thanx作为代码。我会在研究摆动之后使用它,然后我会告诉您是否存在问题。ThanxBeg对不起,但是为什么
ImageObserver
部分会为null
,如果调用paintComponent()方法时图像尚未完全读入内存,则只需使用“this”,而不是引用当前正在绘制图像的JComponent
。更改了示例,使其在所有情况下都能工作。我不擅长摆动。因此我使用visual designer.Thanx作为代码。我将在研究摆动后使用它,然后我会让您知道是否存在问题。ThanxBeg对不起,但是为什么ImageObserver
部分为null
,如果调用paintComponent()方法时图像尚未完全读入内存,则只需使用“this”,而不是引用当前正在绘制图像的JComponent
。更改了示例,使其适用于所有情况。