我正在构建一个程序并在多个操作系统上进行处理。 Windows 10和Windows 7.当我为Windows 10或Windows 7正确设置最小大小时,它适用于该操作系统但会混淆其他操作系统。有没有办法让setMinimumSize调整边框厚度?或者有没有办法在该操作系统上获得边框的厚度?或者有没有办法将JFrame的最小大小设置为打开时的大小?任何帮助表示赞赏。感谢。
答案 0 :(得分:4)
不要设置最小尺寸。布局管理器的工作是确定组件的大小。布局管理器将在所有操作系统上完成其工作。
您需要做的就是将组件添加到面板/框架中,然后使用:
frame.pack();
frame.setVisible();
pack()
方法调用布局管理器,以便正确调整所有组件的大小。
阅读Layout Managers上Swing教程中的部分,了解更多信息和工作示例。我建议你将教程书签为教程所有Swing基础知识。
我不希望用户能够将帧的大小设置为低于特定大小。
当一个应用程序告诉我有多小(大)我可以制作框架时,这是非常烦人的。桌面是我的空间,如果我想让它更小(更大),那么你不应该关心。如果我缺少信息,我可以稍后将框架放大(更小)。您的框架设计应该灵活,以允许调整大小。
在任何情况下,您都可以通过执行以下操作来设置最小值:
frame.pack();
frame.setVisible();
frame.setMinimumSize( frame.getSize() );
答案 1 :(得分:-1)
我刚刚在使用Java 8的macOS上遇到了这样的问题。我希望用户能够调整窗口大小,但要遵守布局管理器计算的最小大小。不幸的是,控制窗口大小的AWT代码只有在显式设置时才会查看最小大小。
这是我提出的解决方案。我重写了框架上的doLayout()方法:
library(quantmod)
stk <- suppressWarnings(getSymbols("AAPL", auto.assign = FALSE,
src = "yahoo", periodicity = "daily"))
stk <- na.omit(stk)
stk.lm1 <- lm(log(Cl(stk)) ~ c(1:nrow(stk)), data = stk)
plot(index(stk), log(Cl(stk)), type = "l", lwd = 3, las = 1)
abline(coefficients(stk.lm1)[1], coefficients(stk.lm1)[2], col="blue")
现在,每次重新计算布局时,新的最小大小都会被缓存为显式设置值,因此AWT会关注它。