这是一个Swing的基础问题,用下面的代码可以打印出JPanel的大小,它确实是自动适应着JFrame,只要在设置JFrame的Size之后再pane.getSize()就可以了。 JFrame默认采用的是BorderLayout布局(边框布局),frame.getContentPane().add(pane);默认将pane添加在BorderLayout.CENTER(也就是边框布局的正中间),在BorderLayout布局中添加的组件是会充满整个区域,所以JPanel会自动适应着JFrame的大小。import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class Test {
private JFrame frame;
private JPanel pane; public Test() {
frame = new JFrame("Test");
pane = new JPanel();
frame.getContentPane().add(pane, BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setSize(400, 300);
frame.setVisible(true);
System.out.println("width = " + pane.getSize().getWidth() + "\n\rheight = " + pane.getSize().getHeight());
} public static void main(String[] args) {
new Test();
}
}<------ 树欲静而风不止 ------>
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class Test {
private JFrame frame;
private JPanel pane; public Test() {
frame = new JFrame("Test");
pane = new JPanel();
frame.getContentPane().add(pane, BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setSize(400, 300);
frame.setVisible(true);
System.out.println("width = " + pane.getSize().getWidth() + "\n\rheight = " + pane.getSize().getHeight());
} public static void main(String[] args) {
new Test();
}
}<------ 树欲静而风不止 ------>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货