在图像上添加组件
Adding components over image
我一直在网上寻找如何在图像上添加组件的解决方案。我试过这个:
setContentPane(new JComponent(){
@Override
protected void paintComponent(Graphics g){
URL url = ...;
if(url==null){
//... Irelevant
return;
}
try {
BufferedImage img = ImageIO.read(url);
g.drawImage(img,0 ,0, this);
super.paintComponents(g);
} catch (IOException e) {
//... Irelevant
e.printStackTrace();
return;
}
}
});
nameLabel=new JLabel("<html><body>"+Main.translateColorsToHTML(name)+"</body></html>");
nameLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
nameLabel.setVisible(true);
add(nameLabel);
没有用,所以我试过了:
URL url = ...;//Fetching the url
if(url==null){
//... Unrelevant
return;
}
try {
BufferedImage img = ImageIO.read(url);
invImg = new JLabel(new ImageIcon(img));
invImg.setMaximumSize(new Dimension(340, 250));
setContentPane(invImg);
} catch (IOException e) {
e.printStackTrace();
return;
}
然后将组件添加到内容窗格/框架本身。
我完全不知道该怎么做,我们将不胜感激。
提前致谢!
我找到了一个很好用的解决方案:
BufferedImage img = ImageIO.read(url);
invImg = new JLabel();
invImg.setIcon(new ImageIcon(img));
invImg.setLayout(new BoxLayout(invImg, BoxLayout.Y_AXIS));
setContentPane(invImg);
嘿,介意在你的 JFrame
上添加一个 jPanel
吗? (这几乎总是一个更好的主意)
在你的 JFrame
上添加一个 jPanel
,然后在上面画画。
Override
jPanel
的 paint(Graphics2D g)
方法(继承自 JComponent
)并像这样绘制图像
yourPanel = new javax.swing.JPanel(){
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(yourImage, null, x, y);
}
}
我一直在网上寻找如何在图像上添加组件的解决方案。我试过这个:
setContentPane(new JComponent(){
@Override
protected void paintComponent(Graphics g){
URL url = ...;
if(url==null){
//... Irelevant
return;
}
try {
BufferedImage img = ImageIO.read(url);
g.drawImage(img,0 ,0, this);
super.paintComponents(g);
} catch (IOException e) {
//... Irelevant
e.printStackTrace();
return;
}
}
});
nameLabel=new JLabel("<html><body>"+Main.translateColorsToHTML(name)+"</body></html>");
nameLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
nameLabel.setVisible(true);
add(nameLabel);
没有用,所以我试过了:
URL url = ...;//Fetching the url
if(url==null){
//... Unrelevant
return;
}
try {
BufferedImage img = ImageIO.read(url);
invImg = new JLabel(new ImageIcon(img));
invImg.setMaximumSize(new Dimension(340, 250));
setContentPane(invImg);
} catch (IOException e) {
e.printStackTrace();
return;
}
然后将组件添加到内容窗格/框架本身。 我完全不知道该怎么做,我们将不胜感激。 提前致谢!
我找到了一个很好用的解决方案:
BufferedImage img = ImageIO.read(url);
invImg = new JLabel();
invImg.setIcon(new ImageIcon(img));
invImg.setLayout(new BoxLayout(invImg, BoxLayout.Y_AXIS));
setContentPane(invImg);
嘿,介意在你的 JFrame
上添加一个 jPanel
吗? (这几乎总是一个更好的主意)
在你的 JFrame
上添加一个 jPanel
,然后在上面画画。
Override
jPanel
的 paint(Graphics2D g)
方法(继承自 JComponent
)并像这样绘制图像
yourPanel = new javax.swing.JPanel(){
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(yourImage, null, x, y);
}
}