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