作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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居中
)
来自 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/
我是一名优秀的程序员,十分优秀!