gpt4 book ai didi

java - JAVA 中的 JPanel 内部的 JPanel

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:08:14 24 4
gpt4 key购买 nike

  public static void main(String[] args) {
JTextField text = new JTextField();
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5, 4));
JPanel panel2 = new JPanel();
panel2.setLayout(new FlowLayout());



JLabel imgLabel1 = new JLabel(new ImageIcon("C:\\Users\\Arthur\\Downloads\\abs.jpg"));
JLabel imgLabel2 = new JLabel(new ImageIcon("C:\\Users\\Arthur\\Downloads\\abss.jpg"));


imgLabel1.setPreferredSize(new Dimension(100,100));
imgLabel2.setPreferredSize(new Dimension(100,100));

panel2.add(imgLabel1);
panel2.add(imgLabel2);


for(int i=0; i<20; i++){
panel.add(panel2);
}


frame.add(text, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
frame.setPreferredSize(new Dimension(1280,700));
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

我想做一个内存游戏,我需要在 4x5 的 JPanel 的每个单元格中放两张图片。为此,我创建了一个 JPanel 1x2,里面有两个图像,并将其放在 4x5 的 JPanel 中。但结果是:

结果:

enter image description here

最佳答案

因此,如果理解正确,您的问题是,您没有看到 20 个新面板,只有一个。

问题是,一个组件只能驻留在一个容器中,一次,所以做一些像...

for (int i = 0; i < 20; i++) {
panel.add(panel2);
}

相当于做类似...

panel.add(panel2);

您实际上需要在循环的每次迭代中创建组件的新实例

我建议您做的是创建一个可以包含两个图像的“包装”或“卡片”面板。在我的测试中,我只使用了彩色面板,但你明白了......

public class WrapperPane extends JPanel {

public WrapperPane() {
setLayout(new FlowLayout());
add(makePanel(Color.RED));
add(makePanel(Color.GREEN));
// This is just for demonstration purposes
setBorder(new LineBorder(Color.DARK_GRAY));
}

protected JPanel makePanel(Color background) {
JPanel panel = new JPanel();
panel.setBackground(background);
panel.setPreferredSize(new Dimension(100, 100));
return panel;
}

}

你只需要做类似...

JTextField text = new JTextField();
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5, 4));

for (int i = 0; i < 20; i++) {
panel.add(new WrapperPane());
}

frame.add(text, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
// Don't do this, just let the content make it's own
// calculations
//frame.setPreferredSize(new Dimension(1280, 700));
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

你最终会得到类似...

Pretty

关于java - JAVA 中的 JPanel 内部的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50780340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com