Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java J按纵横比调整帧大小_Java_Swing - Fatal编程技术网

Java J按纵横比调整帧大小

Java J按纵横比调整帧大小,java,swing,Java,Swing,我用一个带有组件的jFrame制作了一个游戏。有没有一种方法可以使JFrame更大,但使用正方形的外观,以便在拖动时长度始终等于宽度 感谢您的帮助 干杯您可以实现ComponentListener并拥有类似的功能 @Override public void componentResized(ComponentEvent arg0) { Rectangle b = arg0.getComponent().getBounds(); arg0.getComponent().setBou

我用一个带有组件的jFrame制作了一个游戏。有没有一种方法可以使JFrame更大,但使用正方形的外观,以便在拖动时长度始终等于宽度

感谢您的帮助


干杯

您可以实现ComponentListener并拥有类似的功能

@Override
public void componentResized(ComponentEvent arg0) {
    Rectangle b = arg0.getComponent().getBounds();
    arg0.getComponent().setBounds(b.x, b.y, b.width, b.width);

}

并将其用于JFrame。唯一的问题是,使用JFrame,它在释放鼠标之前不会引发此事件。如果您想在拖动鼠标时看到更改,则必须使用JPanel并使用此ComponentListener,而不是JFrame,然后用面板填充框架。

您可以实现ComponentListener并具有类似的功能

@Override
public void componentResized(ComponentEvent arg0) {
    Rectangle b = arg0.getComponent().getBounds();
    arg0.getComponent().setBounds(b.x, b.y, b.width, b.width);

}

并将其用于JFrame。唯一的问题是,使用JFrame,它在释放鼠标之前不会引发此事件。如果您想在拖动鼠标时看到更改,则必须使用JPanel并使用此ComponentListener,而不是JFrame并用面板填充框架。

您可以尝试以下操作:

public void componentResized(ComponentEvent e) {
                System.out.println("i have changed size applying aspect ratio now.");

                setSize(getWidth(), getWidth());
                repaint();
            }

这有点不直观,因为它会在调整组件大小后调整大小。

您可以尝试以下操作:

public void componentResized(ComponentEvent e) {
                System.out.println("i have changed size applying aspect ratio now.");

                setSize(getWidth(), getWidth());
                repaint();
            }
这有点不直观,因为它会在调整组件大小后调整大小