gpt4 book ai didi

java - 当窗口大小改变时扩展框架以填充空间

转载 作者:行者123 更新时间:2023-12-01 23:12:18 25 4
gpt4 key购买 nike

这是我正在使用的完整相关代码:

    JPanel songDetails = new JPanel(new GridBagLayout() ); 

GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0;
constraints.gridx = 0;
constraints.gridy = 0;

for(int i = 0; i < songOptions.length; i++, constraints.gridx++){
songDetails.add(this.buttons[i],constraints);
}

constraints.gridy = 1;

for(int i = 0; i < songInfo.length; i++, constraints.gridy++){

constraints.gridwidth = 1;
constraints.gridx = 0;
songDetails.add(this.labels[i],constraints);

constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.gridx = 1;
songDetails.add(this.fields[i],constraints);
}


JList<Song> list = new JList<Song>(this.lib); //data has type Object[]
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setLayoutOrientation(JList.VERTICAL);
list.setVisibleRowCount(5);


JScrollPane listScroller = new JScrollPane();
listScroller.setViewportView(list);

constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0;
constraints.gridheight = GridBagConstraints.RELATIVE;
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.gridx = 0;
constraints.gridy = 0;
constraints.anchor = GridBagConstraints.NORTHWEST;
setLayout(new GridBagLayout());
add(listScroller,constraints);
constraints.gridy++;
add(songDetails, constraints);

在 main 中,我按如下方式初始化框架:

    SongLib myLibrary = new SongLib("Song Library", pathName );
myLibrary.setVisible(true);
myLibrary.setSize(300, 250);// Sets the Frame Size
myLibrary.setMinimumSize(new Dimension(300,250));
myLibrary.setResizable(true);//Makes the size not fixed
myLibrary.setLocationRelativeTo(null); // Make the Frame appear centered
myLibrary.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Tells program to exit when the 'x'(close) button is pressed

我的问题是,当我扩展框架时,它在水平(宽度)上扩展得很好,但在垂直方向上根本不扩展。我认为更改填充值可以为我做到这一点,但事实并非如此。另外,如果可能的话,在发生此更改时更改字体大小。

如果不是太复杂,我还想让用户能够更改每个框架的相对大小。我认为需要某种 Action 监听器。如果是的话,我会稍后研究,但如果有什么我忽略的事情,我将不胜感激!

最佳答案

代码中的注意事项:

GridBagConstraints constraints = new GridBagConstraints();   
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0; // *********
constraints.gridx = 0;
constraints.gridy = 0;

您没有为 GridBagConstraints 设置权重,只是设置了weightx。设置此项,它将垂直扩展。

例如,

GridBagConstraints constraints = new GridBagConstraints();   
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0;
constraints.weighty = 1.0; // ***** added *****
constraints.gridx = 0;
constraints.gridy = 0;

关于java - 当窗口大小改变时扩展框架以填充空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21710929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com