Java 如何根据窗口调整jlabel的大小

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

我正在使用netbeans设计一个JFrame。

现在当我编译和运行时,它会执行并打开一个窗口

现在的问题是当我最大化窗口时,我希望图像或Jlabel覆盖jframe的宽度


那么我该怎么做呢。Plz Help

JLabel总是以实际大小绘制图标

如果您想要动态缩放图像,则需要进行自定义绘制。基本上,您可以使用如下代码覆盖JComponent的paintComponent(..)方法:

super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
当然,创建类时需要将图像作为参数传递。它还假定您直接将组件添加到默认情况下使用BorderLayout的内容窗格中

对于更高级或更灵活的解决方案,您可以:

  • 使用
  • 在JLabel上使用

  • JLabel始终以实际大小绘制图标

    如果您想要动态缩放图像,则需要进行自定义绘制。基本上,您可以使用如下代码覆盖JComponent的paintComponent(..)方法:

    super.paintComponent(g);
    g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
    
    当然,创建类时需要将图像作为参数传递。它还假定您直接将组件添加到默认情况下使用BorderLayout的内容窗格中

    对于更高级或更灵活的解决方案,您可以:

  • 使用
  • 在JLabel上使用

  • 首先停止使用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
    。更改了示例,使其适用于所有情况。