Java 检测JFrame调整大小

Java 检测JFrame调整大小,java,swing,jframe,Java,Swing,Jframe,我使用一个JFrame,当用户从原始大小(400x300)调整它的大小并且width达到某个值时,我想使用它来做一些事情,让我们在这里称它为print命令。我使用: import javax.swing.JFrame; public class DC extends JFrame { public DC() { setSize(400, 300); setVisible(true); if (getWidth() >= 1000)

我使用一个
JFrame
,当用户从原始大小(400x300)调整它的大小并且
width
达到某个值时,我想使用它来做一些事情,让我们在这里称它为print命令。我使用:

import javax.swing.JFrame;

public class DC extends JFrame {
    public DC() {
        setSize(400, 300);
        setVisible(true);
        if (getWidth() >= 1000) System.out.print("Thousand");
    }

    public static void main(String[] args) {
        DC dc = new DC();
        dc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

这是可行的,但仅当我从一开始就设置大小(1000300)时有效,而当用户调整帧大小时无效。我知道我会荡秋千,我认为这不是解决问题的方法。我应该在哪里解决这个问题?Ty

您新修改的代码(窗口宽度大于等于1000时,将立即打印千个)--


您新修改的代码(当窗口宽度大于等于1000时,将打印1000个)--


你应该可以给我们一个ComponentListener“。让我们在这里称之为打印命令”不,让我们称之为它实际是什么。看,你应该能够给我们一个ComponentListener“。让我们在这里称之为打印命令”不,让我们称之为它实际上是什么。看见
import java.awt.Component; //import these 3 header files
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

import javax.swing.JFrame;

public class DC extends JFrame {
    public DC() {
        setSize(400, 300);
        setVisible(true);
       // if (getWidth() >= 1000) System.out.print("Thousand");
        addComponentListener(new ComponentAdapter() 
        {  
                public void componentResized(ComponentEvent evt) {
                    Component c = (Component)evt.getSource();
                    if(c.getWidth()>=1000) //This will print Thousand
                    {
                    System.out.println("Thousand");
                    }
                }
        });
    }


    public static void main(String[] args) {
        DC dc = new DC();
        dc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}