gpt4 book ai didi

java - 如何将不同大小的元素立即放在彼此之上?

转载 作者:行者123 更新时间:2023-12-05 07:12:53 25 4
gpt4 key购买 nike

如下程序段生成如图红框内的输出:

st = c.con.createStatement();
rs = st.executeQuery("SELECT itemName, itemMaxQty, itemImage FROM item");

while(rs.next()){
JPanel itemPanel = new JPanel();

itemPanel.setLayout(new BoxLayout(itemPanel, BoxLayout.PAGE_AXIS));
JPanel componentPanel = new JPanel();
componentPanel.setLayout(new FlowLayout(FlowLayout.LEFT));

JLabel itemName = new JLabel(rs.getString(1));
ImageIcon itemImage = new ImageIcon(rs.getString(3));
Image scaleImage = itemImage.getImage().getScaledInstance(120, 120, Image.SCALE_SMOOTH);
JLabel imageHolder = new JLabel(new ImageIcon(scaleImage));
JSpinner quantityField = new JSpinner();
Dimension d = quantityField.getPreferredSize();
d.width = 60;
d.height = 30;
quantityField.setPreferredSize(d);

componentPanel.add(imageHolder);
componentPanel.add(quantityField);
itemPanel.add(componentPanel);
itemPanel.add(itemName);

add(itemPanel);
}

program output

我知道代码的某些部分可能不是最好的方法,但这是我现在可以根据我所掌握的知识做的。

我实际上有两个问题。

首先,我不明白为什么 itemName 的值(Cupcake Stand、chafers 等)居中。

<强>1。如何使它居中,使其与顶部的相应图片对齐?

其次,如您所见,在 componentPanel(图片和 JSpinner)和 itemName 之间有一个很大的空间。我认为这是因为为 itemName 分配的高度与为 componentPanel 分配的高度相同。所以

<强>2。如何使 itemName 紧接在 componentPanel 下方?

最佳答案

您可以通过将 itemPanelLayoutManager 更改为 BorderLayout(使用 itemPanel.setLayout(new BorderLayout( ));), 并以这种方式将组件添加到 itemPanel:

itemPanel.add(componentPanel, BorderLayout.CENTER);
itemPanel.add(itemName, BorderLayout.SOUTH);

关于java - 如何将不同大小的元素立即放在彼此之上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60293470/

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