我在格式化我正在开发的程序的 GUI 时遇到问题。我需要有四个按钮,上面有一个 JList。我的 JList 一直出现在所有按钮旁边,而不是它们上方。谁能指出我解决问题的正确方向?
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class Test extends JPanel {
private static final long serialVersionUID = 1L;
private JList jlist;
public static void main(String[] args) {
JFrame boxOptions = new JFrame("Calculator");
boxOptions.setSize(0,0);
boxOptions.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
boxOptions.setResizable(false);
boxOptions.setLayout(new BorderLayout());
boxOptions.add(new Test(), BorderLayout.CENTER);
boxOptions.pack();
boxOptions.setLocationRelativeTo(null);
boxOptions.setVisible(true);
}
public Test(){
setLayout(new GridLayout(1, 4, 5, 5));
add(new JButton("add"));
add(new JButton("Check In"));
add(new JButton("Check Out"));
add(new JButton("Delete"));
String[] Titles = {"one", "two", "three"};
jlist = new JList(Titles);
jlist.setVisibleRowCount(3);
add(new JScrollPane(jlist), BorderLayout.NORTH);
}
}
最佳答案
您将 Test JPanel 类的布局设置为 GridLayout,然后尝试使用 BorderLayout.NORTH 说明符向其中添加组件 - 这不符合规范,因为该说明符仅适用于 BorderLayout,对您来说毫无意义GridLayout-使用测试 JPanel。
解决方案:嵌套 JPanel。让外部 JPanel 使用 BorderLayout,并使用 BorderLayout.NORTH 说明符将列表的 JScrollPane 添加到此外部 JPanel,然后创建一个使用 GridLayout 的内部 JPanel,该内部 JPanel 保存 JButton,并将其添加到 BorderLayout 中的主外部 JPanel。中心位置。
最重要的是:阅读 Swing 教程,您可以在其中找到 here ,特别是有关使用布局管理器的部分,因为无需猜测这些内容。
关于Java JList GUI 格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23258601/