Java 如何设置JFrame的最大大小?
有以下代码:Java 如何设置JFrame的最大大小?,java,Java,有以下代码: double gridWidth=columnNumber*(IMAGE_WIDTH_NORMAL+10)+(columnNumber+2)*10; double screenWidth=Toolkit.getDefaultToolkit().getScreenSize().getWidth()*0.8; screenWidth=(gridWidth>=screenWidth) ? screenWidth : gridWidth; double gridHeight=(ru
double gridWidth=columnNumber*(IMAGE_WIDTH_NORMAL+10)+(columnNumber+2)*10;
double screenWidth=Toolkit.getDefaultToolkit().getScreenSize().getWidth()*0.8;
screenWidth=(gridWidth>=screenWidth) ? screenWidth : gridWidth;
double gridHeight=(rules.size()+2)*(IMAGE_HEIGHT_NORMAL+10)+rules.size()*20+(rules.size()+2)*10;
double screenHeight=Toolkit.getDefaultToolkit().getScreenSize().getHeight()*0.8;
screenHeight=(gridHeight>=screenHeight) ? screenHeight : gridHeight;
setSize((int)screenWidth, (int)screenHeight);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation(screenSize.width/2-getWidth()/2, screenSize.height/2-getHeight()/2);
setMaximumSize(new Dimension((int)gridWeight, (int)gridHeight));
setVisible(true);
此代码执行以下操作:计算帧的首选宽度和高度,如果大小大于我想要的大小(宽度和高度的80%),则应用程序设置另一个大小;但是我想允许用户在jframe上单击“全屏”图标,以最大化jframe的首选大小(setMaximumSize()方法),但它的代码不起作用!总是一个windows最大化到我的笔记本电脑的全屏!我怎样才能修好它 我不确定是否正确理解了您的问题,但我建议使用 设置JFrame的位置和大小
int x = screenSize.width/2-getWidth()/2;
int y = screenSize.height/2-getHeight()/2;
int width = (int)gridWeight;
int height = (int)gridHeight);
setBounds(x, y, width, height);
为了最大化JFrame,我建议使用
像这样
setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
我不确定我是否正确理解了您的问题,但我建议使用 设置JFrame的位置和大小
int x = screenSize.width/2-getWidth()/2;
int y = screenSize.height/2-getHeight()/2;
int width = (int)gridWeight;
int height = (int)gridHeight);
setBounds(x, y, width, height);
为了最大化JFrame,我建议使用
像这样
setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
您需要这样做: _mainDialog.setBounds(矩形) _mainDialog.setExtendedState(windowsState) 示例:
addWindowStateListener(new WindowStateListener() {
@Override
public void windowStateChanged(WindowEvent e) {
int oldState = e.getOldState();
int newState = e.getNewState();
if ((oldState & JFrame.ICONIFIED) == 0 && (newState & JFrame.ICONIFIED) != 0) {
setMainDialogRectangle(minRectangle, JFrame.NORMAL);
}
else if ((oldState & JFrame.ICONIFIED) != 0 && (newState & JFrame.ICONIFIED) == 0) {
setMainDialogRectangle(minRectangle, JFrame.NORMAL);
}
else if ((e.getNewState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH) {
setMainDialogRectangle(maxRectangle, JFrame.MAXIMIZED_BOTH);
}
else if ((oldState & JFrame.MAXIMIZED_BOTH) != 0 && (newState & JFrame.MAXIMIZED_BOTH) == 0) {
setMainDialogRectangle(medRectangle, JFrame.NORMAL);
}
}
});
您需要这样做: _mainDialog.setBounds(矩形) _mainDialog.setExtendedState(windowsState) 示例:
addWindowStateListener(new WindowStateListener() {
@Override
public void windowStateChanged(WindowEvent e) {
int oldState = e.getOldState();
int newState = e.getNewState();
if ((oldState & JFrame.ICONIFIED) == 0 && (newState & JFrame.ICONIFIED) != 0) {
setMainDialogRectangle(minRectangle, JFrame.NORMAL);
}
else if ((oldState & JFrame.ICONIFIED) != 0 && (newState & JFrame.ICONIFIED) == 0) {
setMainDialogRectangle(minRectangle, JFrame.NORMAL);
}
else if ((e.getNewState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH) {
setMainDialogRectangle(maxRectangle, JFrame.MAXIMIZED_BOTH);
}
else if ((oldState & JFrame.MAXIMIZED_BOTH) != 0 && (newState & JFrame.MAXIMIZED_BOTH) == 0) {
setMainDialogRectangle(medRectangle, JFrame.NORMAL);
}
}
});