我有一个JPanel,它不应该缩小到小于最小大小,但它没有这样做。我知道我应该使用我已经实现但仍然没有用处的ComponentListener。
有人能从编程的角度解释一下出了什么问题吗?
以下是代码的相关部分:
public class ResearchdbView extends JFrame {
private javax.swing.JMenuBar menuBar;
private ResearchdbView() {
initComponents();
}
private void initComponents() {
mainPanel = new javax.swing.JPanel();
mainPanel.setSize(new java.awt.Dimension(880, 700));
mainPanel.setMaximumSize(null);
mainPanel.setMinimumSize(new java.awt.Dimension(880, 700));
mainPanel.setPreferredSize(new java.awt.Dimension(880, 700));
setResizable(true);
mainPanel.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(ComponentEvent ce) {
mainPanel.setSize((Math.max(880, mainPanel.getWidth())), Math.max(700, mainPanel.getHeight()));
}
});
this.getContentPane().add(mainPanel, BorderLayout.CENTER);
}}PS。我已经尝试了类似帖子中的所有解决方案来到达这里。
发布于 2019-03-20 03:28:57
对于放置在中心位置的零部件,BorderLayout不会考虑任何这些尺寸提示。
对于不同的边框,这取决于您设置的大小。北向和南向尊重首选的高度(但忽略宽度)。WEST和EAST尊重首选的宽度和忽略高度。其他大小提示将被忽略。
编辑:查看这个网站,它有一个很好的表格,概述了不同的布局管理器对这些提示做了什么。https://thebadprogrammer.com/swing-layout-manager-sizing/
我试图在javadoc中找到一个,但无法在单个空间中找到这些信息。
https://stackoverflow.com/questions/55248499
复制相似问题