我JFrame
包含两个面板。
第一个面板(jpanel1
)有一条欢迎信息。
第二个小组(jpanel2
)的JTable
中包含JScrollPane
。
每当JFrame
调整大小时,我希望JTable
使用额外的空格。
我曾使用GridBagLayout
来实现此目标
c.gridx=0
,c.gridy=0
<{1}}。jpanel1
c.gridx=0
的 c.gridy=1
,c.fill=BOTH
,jpanel2
。
我看到jpanel2
在帧大小增加时会增长。
在jpanel2
尺寸增加时,需要采取哪些措施来增加滚动窗格和表格大小。
答案 0 :(得分:2)
LayoutManager
的问题。
根据MadProgrammer的建议,BorderLayout
使用jpanel2
来调整JScrollPane
内jpanel2
的大小。
使用c.fill=BOTH
,您需要使用c.weightx = 1;c.weighty = 1;
来指定组件需要多少额外空间。阅读more。
以下是示例:
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class TestFrame extends JFrame {
public TestFrame() {
init();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private void init() {
JPanel p1 = new JPanel();
p1.setBorder(BorderFactory.createTitledBorder("P1"));
p1.add(new JLabel("test"));
JPanel p2 = new JPanel(new BorderLayout());
p2.setBorder(BorderFactory.createTitledBorder("P2"));
p2.add(new JScrollPane(new JTable(2,2)));
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx=0;
c.gridy=0;
add(p1,c);
c.fill = GridBagConstraints.BOTH;
c.weightx = 1;
c.weighty = 1;
c.gridx=0;
c.gridy=1;
add(p2,c);
}
public static void main(String args[]) {
new TestFrame();
}
}