如何在jFrame中循环jPanel?
How to for loop jPanel in jFrame?
请问为什么我的 jPanel 没有出现在 jFrame 中?我想让 5 个蓝色 jPanel 出现在 jFrame 中,但为什么只有 1 个蓝色 jPanel 出现在我的 jFrame 中?感谢您的帮助!
public class NewJFrame2 extends javax.swing.JFrame {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
/**
* Creates new form NewJFrame2
*/
public NewJFrame2() {
initComponents();
JPanel[] panelArray = new JPanel[5];
JButton btnArray[] = new JButton[5];
for(int i = 0; i<5;i++)
{
panelArray[i] = new JPanel();
//panelArray[i].setVisible(true);
System.out.println(panelArray[i]);
javax.swing.border.Border border = BorderFactory.createLineBorder(Color.BLUE, 5);
panelArray[i].setBackground(Color.YELLOW);
panelArray[i].setBorder(border);
frame.getContentPane().add(panelArray[i]);
}
frame.setSize(new Dimension(500, 400));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("A Simple JFrame");
frame.setVisible(true);
}
如评论中所述,您需要 LayoutManager。
当前的问题是您将所有五个面板添加到框架上完全相同的 space。为了解决这个问题,你需要为框架提供一个结构,将不同的坐标与不同的区域相关联。
This answer 包含一个很好的起点,供您开始使用 Java 中的布局。
将容器 JPanel 与 BoxLayout 结合使用——有关详细信息,请参阅下面的评论:
initComponents();
JPanel[] panelArray = new JPanel[5];
JButton btnArray[] = new JButton[5];
JPanel container = new JPanel(); // Container JPanel
container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS)); // With a BoxLayout
for (int i = 0; i < 5; i++) {
panelArray[i] = new JPanel();
//panelArray[i].setVisible(true);
System.out.println(panelArray[i]);
javax.swing.border.Border border = BorderFactory.createLineBorder(Color.BLUE, 5);
panelArray[i].setBackground(Color.YELLOW);
panelArray[i].setBorder(border);
container.add(panelArray[i]); // Adding 5 JPanels to container JPanel
}
frame.getContentPane().add(container); // Adding container JPanel to JFrame
frame.setSize(new Dimension(500, 400));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("A Simple JFrame");
frame.setVisible(true);
请问为什么我的 jPanel 没有出现在 jFrame 中?我想让 5 个蓝色 jPanel 出现在 jFrame 中,但为什么只有 1 个蓝色 jPanel 出现在我的 jFrame 中?感谢您的帮助!
public class NewJFrame2 extends javax.swing.JFrame {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
/**
* Creates new form NewJFrame2
*/
public NewJFrame2() {
initComponents();
JPanel[] panelArray = new JPanel[5];
JButton btnArray[] = new JButton[5];
for(int i = 0; i<5;i++)
{
panelArray[i] = new JPanel();
//panelArray[i].setVisible(true);
System.out.println(panelArray[i]);
javax.swing.border.Border border = BorderFactory.createLineBorder(Color.BLUE, 5);
panelArray[i].setBackground(Color.YELLOW);
panelArray[i].setBorder(border);
frame.getContentPane().add(panelArray[i]);
}
frame.setSize(new Dimension(500, 400));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("A Simple JFrame");
frame.setVisible(true);
}
如评论中所述,您需要 LayoutManager。
当前的问题是您将所有五个面板添加到框架上完全相同的 space。为了解决这个问题,你需要为框架提供一个结构,将不同的坐标与不同的区域相关联。
This answer 包含一个很好的起点,供您开始使用 Java 中的布局。
将容器 JPanel 与 BoxLayout 结合使用——有关详细信息,请参阅下面的评论:
initComponents();
JPanel[] panelArray = new JPanel[5];
JButton btnArray[] = new JButton[5];
JPanel container = new JPanel(); // Container JPanel
container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS)); // With a BoxLayout
for (int i = 0; i < 5; i++) {
panelArray[i] = new JPanel();
//panelArray[i].setVisible(true);
System.out.println(panelArray[i]);
javax.swing.border.Border border = BorderFactory.createLineBorder(Color.BLUE, 5);
panelArray[i].setBackground(Color.YELLOW);
panelArray[i].setBorder(border);
container.add(panelArray[i]); // Adding 5 JPanels to container JPanel
}
frame.getContentPane().add(container); // Adding container JPanel to JFrame
frame.setSize(new Dimension(500, 400));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("A Simple JFrame");
frame.setVisible(true);