java在循环中创建JButtons只会导致最后一个出现
我试图用扫描仪读取一个文件,并为文件中的每一行创建一个JButton。创建按钮后,我将其添加到框架中。但是,一旦我运行程序,只有最新的按钮出现。我不确定为什么在循环中创建按钮会导致这种情况发生。如果有人能解释为什么会发生这种情况,我们将不胜感激,谢谢
import java.awt.FlowLayout;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
public class PointOfSale extends JFrame {
ArrayList<JButton> menuButtons = new ArrayList<>();
public PointOfSale(File menu) throws IOException{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
Scanner sc = new Scanner(menu);
while (sc.hasNextLine()){
String name = sc.nextLine();
JButton menuButton = new JButton(name);
frame.add(menuButton);
menuButtons.add(menuButton);
}
sc.close();
frame.pack();
frame.setVisible(true);
}
}
# 1 楼答案
您的类不需要扩展JFrame,因为您在类中创建了JFrame
然后您需要使用:
因为这是添加按钮的框架
# 2 楼答案
您的代码不尊重布局管理器,因为JFrame使用的BorderLayout只显示一个按钮。阅读layout manager教程,使用不同的教程,这里可能是GridLayout,您的问题很可能会得到解决