这段代码只是一个愚蠢的例子,我需要理解它以解决我正在工作的另一个项目中更大的问题:正如您所看到的,在for循环中,应该向JPanel添加23个按钮。由于它们不能全部显示,我决定添加一个JScrollPane,但是奇怪的事情发生了:只有19个被显示出来,我不明白为什么。大小矩阵有23行1列,因此是正确的。你知道为什么会这样吗?谢谢
package proveGUI;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import layout.TableLayout;
public class Main {
public static void main(String argv[]) {
JFrame jframe = new JFrame("Protocollo UTL");
//jframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
jframe.setSize(1200, 450);
JPanel body = new JPanel();
double[][] size = {
{0.05},
{0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05}
};
body.setLayout(new TableLayout(size));
for(int i=0; i<22; i++) {
body.add(new JButton(String.valueOf(i)), "0,"+String.valueOf(i));
}
JScrollPane scrollPane = new JScrollPane(body,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jframe.add(scrollPane);
jframe.setVisible(true);
}
}
body.setLayout(new BoxLayout(body, BoxLayout.Y_AXIS));
替代TableLayout
。 - SeniorJDGridBagLayout
。 - MadProgrammer