简短的版本:我需要做一些棘手的事情来让JDialog的setMaximumSize()起作用吗?
完整版:我有一个JDialog(布局管理器:BorderLayout),它包含一个滚动窗格和底部带有提交按钮的JPanel.
滚动窗格包含一个JPanel,它在系统的其他位置动态构建.
我想要的是对话框在JPanel周围动态调整大小到一定大小,然后开始增长滚动条.这或多或少是默认情况下发生的事情,除了最大尺寸似乎是我的显示器的大小.
我认为这是从java.awt.Component继承的.setMaximumSize()方法,但设置它似乎没有任何影响.
设置首选大小确实有效 - 但是无论如何,对话框总是那么大,这实际上并不是我想要的.
(如果我在滚动窗格上设置最大/首选大小属性,效果是相同的.)
我错过了一些非常明显的东西吗?是否有一些我不知道的古怪的JDialog/BorderLayout/MaximumSize交互?
我正在创建一个应用程序,框架中有两个面板,顶部有一个菜单栏。菜单栏显示得很好,到目前为止设置的任何操作都可以工作,但其他两个面板从未出现。
我试过追溯所有将它们添加到框架上的面板和线条,但找不到任何错误。
没有显示的两个窗格中的第一个,即 drawForm() 方法中的表单,在我添加一些组件之前确实显示了,但是因为即使我再次删除组件也没有显示。
这是 Frame 类:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Frame {
public static void drawFrame(){
// Create frame
JFrame frame = new JFrame("Frame");
// Set default close operation
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set frame attributes
frame.setVisible(true);
frame.setSize(400, 300);
frame.setResizable(false);
// Set Layout
frame.setLayout(new BorderLayout());
// Add Components
frame.add(drawMenuBar(), BorderLayout.NORTH);
JPanel twinPane = new …Run Code Online (Sandbox Code Playgroud)