在我的swing应用程序中,我必须创建一个用于输入用户输入的数字面板。所需数字可根据要求更改(例如,在一个地方,它包含数字1-90,在另一个地方,它包含1-36个数字)。 我的问题是,在两个位置,当按钮数量发生变化时(从36到90),面板底部和右侧的空间会发生变化。我该如何管理? 我发送的代码供参考。
public class TestNumberPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JButton[] btns;
private static int NUM_BTNS = 42;
private int initialValue = 1;
private int gridRows = 6;
private int gridCols = 7;
public JButton[] getNumBtns() {
return btns;
}
public TestNumberPanel(final int btns) {
NUM_BTNS = btns;
if (NUM_BTNS == 42) {
gridRows = 6;
gridCols = 7;
} else if (NUM_BTNS == 90) {
gridRows = 10;
gridCols = 9;
} else if (NUM_BTNS == 36) {
gridRows = 6;
gridCols = 6;
}
initComponents();
}
private void initComponents() {
btns = new JButton[NUM_BTNS];
for (int i = 0; i < NUM_BTNS; i++) {
btns[i] = new JButton();
btns[i].setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
btns[i].setText(String.valueOf(initialValue));
add(btns[i]);
initialValue++;
}
setPreferredSize(new java.awt.Dimension(500, 370));
// setBackground(ScreenColor.COLOR_WHITE);
setBorder(new EmptyBorder(0, 5, 5, 0));
// GridLayout gridLayout = new GridLayout(gridRows, gridCols, 5, 5);
// gridLayout.minimumLayoutSize(this);
setLayout(new GridLayout(gridRows, gridCols, 5, 5));
// setLayout(gridLayout);
}
@SuppressWarnings("serial")
public static void main(String[] args) {
new JFrame() {
{
try {
add(new TestNumberPanel(36));
pack();
setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
};
}
}
任何有关此代码改进的建议也将不胜感激。 提前谢谢。