无法垂直添加按钮
unable to add buttons vertically
我正在编写一个程序,其中以垂直方式将 JButton 动态添加到 JPanel。 (按钮存储在数组列表中)我通过将 JPanel 设置为 gridbaglayout 尝试了以下代码。
for(int i = 0; i<listOfButtons.size();i++) {
c.gridx=0;
c.gridy=i;
leftButtonPanel.add(listOfButtons.get(i));
}
结果如下
添加按钮后
我也试过将 JPanel 设置为网格布局
leftButtonPanel.setLayout(new GridLayout(listOfButtons.size(),1));
for(int i = 0; i<listOfButtons.size();i++) {
leftButtonPanel.add(listOfButtons.get(i));
}
“查看全部”和“添加”按钮都在同一个 listOfButtons 数组列表中。将按钮添加到面板的唯一方法是通过 forloop。由于某些原因,按钮仍然水平开始。
对于 GridBagLayout
,别忘了,您还需要提供 GridBagConstraints
,否则它的行为很像 FlowLayout
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SoTest {
public static void main(String[] args) {
new SoTest();
}
public SoTest() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.fill = GridBagConstraints.HORIZONTAL;
List<JButton> listOfButtons = new ArrayList<>(5);
for (int i = 0; i < 10; i++) {
listOfButtons.add(new JButton(Integer.toString(i)));
}
for (int i = 0; i < listOfButtons.size(); i++) {
add(listOfButtons.get(i), gbc);
}
}
}
}
此时,我很好奇您是否应该考虑 JList
而不是
我正在编写一个程序,其中以垂直方式将 JButton 动态添加到 JPanel。 (按钮存储在数组列表中)我通过将 JPanel 设置为 gridbaglayout 尝试了以下代码。
for(int i = 0; i<listOfButtons.size();i++) {
c.gridx=0;
c.gridy=i;
leftButtonPanel.add(listOfButtons.get(i));
}
结果如下
添加按钮后
我也试过将 JPanel 设置为网格布局
leftButtonPanel.setLayout(new GridLayout(listOfButtons.size(),1));
for(int i = 0; i<listOfButtons.size();i++) {
leftButtonPanel.add(listOfButtons.get(i));
}
“查看全部”和“添加”按钮都在同一个 listOfButtons 数组列表中。将按钮添加到面板的唯一方法是通过 forloop。由于某些原因,按钮仍然水平开始。
对于 GridBagLayout
,别忘了,您还需要提供 GridBagConstraints
,否则它的行为很像 FlowLayout
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SoTest {
public static void main(String[] args) {
new SoTest();
}
public SoTest() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.fill = GridBagConstraints.HORIZONTAL;
List<JButton> listOfButtons = new ArrayList<>(5);
for (int i = 0; i < 10; i++) {
listOfButtons.add(new JButton(Integer.toString(i)));
}
for (int i = 0; i < listOfButtons.size(); i++) {
add(listOfButtons.get(i), gbc);
}
}
}
}
此时,我很好奇您是否应该考虑 JList
而不是