gpt4 book ai didi

java - 如何在另一个带图标的 JLanel 的中心插入 JLabel

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

我有一个 Java Swing 应用程序。我想插入一个以 png 图像作为背景的 JLabel,并且我想在此图像的中心插入另一个 JLabel。所以我构建了这段代码:

ImageIcon icon = new ImageIcon(getClass().getResource("/resources/cornometro_white.png"));

labelSfondoTimer = new JLabel(icon);
labelTempoGara = new JLabel();
labelTempoGara.text("pippo");
GridBagConstraints GBC2 = new GridBagConstraints();
Container CR2 = new Container();
GridBagLayout GBL2 = new GridBagLayout();
CR2.setComponentOrientation(ComponentOrientation.UNKNOWN);
CR2.setLayout(GBL2);
labelSfondoTimer.add(CR2);

GBC2 = new GridBagConstraints();
CR2.add(labelTempoGara);
GBC2.gridx=2;
GBC2.gridy=0;
GBC2.anchor= GridBagConstraints.CENTER;
GBL2.setConstraints(labelTempoGara,GBC2);

使用此代码,我可以在屏幕上看到图像,但看不到带有文本“pippo”的第二个标签

我也尝试插入此代码:

labelSfondoTimer.setObaque(true); but not works.

最佳答案

那么,我该如何修复我的错误? - 所以,例如打印屏幕(根据我在你的问题中的评论 - JLabel 在 API 中没有任何 LayoutManager,JLabel 有方法居中,JLabel默认透明,GBC无任何约束默认JComponent居中)

enter image description hereenter image description hereenter image description here

来自 SSCCE/MCVE 形式的代码

import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

public class JLabelInJLabel {

private JFrame frame = new JFrame();
private Icon errorIcon = UIManager.getIcon("OptionPane.errorIcon");
private Icon infoIcon = UIManager.getIcon("OptionPane.informationIcon");
private Icon warnIcon = UIManager.getIcon("OptionPane.warningIcon");
private JLabel parentJLabel = new JLabel();
private JLabel childJLabel = new JLabel(infoIcon, SwingConstants.CENTER);
private JLabel imageInJLabel = new JLabel(errorIcon, SwingConstants.CENTER);
private JLabel simpleJLabel = new JLabel(warnIcon);

public JLabelInJLabel() {
parentJLabel.setLayout(new GridBagLayout());
parentJLabel.add(childJLabel);
parentJLabel.setBorder(BorderFactory.createLineBorder(java.awt.Color.RED));
imageInJLabel.setBorder(BorderFactory.createLineBorder(java.awt.Color.BLUE));
simpleJLabel.setBorder(BorderFactory.createLineBorder(java.awt.Color.ORANGE));
frame.setLayout(new GridLayout(0, 1));
frame.add(parentJLabel);
frame.add(imageInJLabel);
frame.add(simpleJLabel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocation(100, 100);
frame.setVisible(true);
}

public static void main(String[] args) {
EventQueue.invokeLater(() -> new JLabelInJLabel());
}
}

关于java - 如何在另一个带图标的 JLanel 的中心插入 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769119/

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