如何设置按钮的大小?

我将按钮放在带有GridLayout的JPane中。然后,我使用BoxLayout.Y_AXIS将JPanel放入另一个JPanel中。我希望GridLayout中的按钮为正方形。我使用tmp.setSize(30,30),它不起作用。我也尝试使用,new

GridLayout(X, Y, 4, 4)但我不知道X和Y是什么。那么,做这些东西的正确方法是什么?

我仍然无法解决问题。这是我正在尝试执行的代码:

import javax.swing.*;

import java.awt.*;

public class PanelModel {

public static void main(String[] args) {

JFrame frame = new JFrame("Colored Trails");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel mainPanel = new JPanel();

mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

JPanel firstPanel = new JPanel();

firstPanel.setLayout(new GridLayout(4, 4));

JButton btn;

for (int i=1; i<=4; i++) {

for (int j=1; j<=4; j++) {

btn = new JButton();

btn.setPreferredSize(new Dimension(100, 100));

firstPanel.add(btn);

}

}

JPanel secondPanel = new JPanel();

secondPanel.setLayout(new GridLayout(5, 13));

for (int i=1; i<=5; i++) {

for (int j=1; j<=13; j++) {

btn = new JButton();

btn.setPreferredSize(new Dimension(40, 40));

secondPanel.add(btn);

}

}

mainPanel.add(firstPanel);

mainPanel.add(secondPanel);

frame.add(mainPanel);

frame.setSize(400,600);

frame.setVisible(true);

}

}

问题是Java试图使宽度firstPanelsecondPanel平等!而且,Java尝试填充窗口的所有高度。如何消除这种行为?

回答:

以下代码可以满足您的要求。只需确保分配足够的空间,以使按钮上的文本可见

JFrame frame = new JFrame("test");

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

JPanel panel = new JPanel(new GridLayout(4,4,4,4));

for(int i=0 ; i<16 ; i++){

JButton btn = new JButton(String.valueOf(i));

btn.setPreferredSize(new Dimension(40, 40));

panel.add(btn);

}

frame.setContentPane(panel);

frame.pack();

frame.setVisible(true);

X和Y(GridLayout构造函数的两个第一个参数)分别指定了网格中的行数和列数。如果您希望该值不受限制,则可以将其中之一保留为0。

我已经修改了提供的代码,并且我相信它现在符合要求:

JFrame frame = new JFrame("Colored Trails");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel mainPanel = new JPanel();

mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

JPanel firstPanel = new JPanel();

firstPanel.setLayout(new GridLayout(4, 4));

firstPanel.setMaximumSize(new Dimension(400, 400));

JButton btn;

for (int i=1; i<=4; i++) {

for (int j=1; j<=4; j++) {

btn = new JButton();

btn.setPreferredSize(new Dimension(100, 100));

firstPanel.add(btn);

}

}

JPanel secondPanel = new JPanel();

secondPanel.setLayout(new GridLayout(5, 13));

secondPanel.setMaximumSize(new Dimension(520, 200));

for (int i=1; i<=5; i++) {

for (int j=1; j<=13; j++) {

btn = new JButton();

btn.setPreferredSize(new Dimension(40, 40));

secondPanel.add(btn);

}

}

mainPanel.add(firstPanel);

mainPanel.add(secondPanel);

frame.setContentPane(mainPanel);

frame.setSize(520,600);

frame.setMinimumSize(new Dimension(520,600));

frame.setVisible(true);

基本上,我现在设置面板的首选大小和框架的最小大小。

以上是 如何设置按钮的大小? 的全部内容, 来源链接: utcz.com/qa/405630.html

回到顶部