我想创造出没有比JLabel的图像的我把它的其他边界或背景,使用OverlayLayout和扩展的JPanel半透明窗口...如何更改JLabel或其他任何我添加的组件的位置?
我的问题是,当我尝试通过添加更多组件我最初添加的这将是背景,我不知道如何启用更改新的组件位置.. x,y等...
如果可能请告诉我我可以做什么,不要只是指向布局经理,如果有人愿意给我看,我需要一个例子。
或者更好的是,让我看看我需要做些什么来达到预期的效果。比如将“text”(A JLabel)的位置改为10,10 ... x和y。
package core;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LayoutManager;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JWindow;
import javax.swing.OverlayLayout;
public class App {
// Window & Panel...
public JWindow frame;
public TranslucentPanel panel;
// OverlayLayout
public LayoutManager overlay;
// Components
public JLabel bg;
public JLabel test;
// Constructor
public App() {
try {
// Basics...
frame = new JWindow();
frame.setBackground(new Color(0, 0, 0, 0));
// Overlay
panel = new TranslucentPanel();
overlay = new OverlayLayout(panel);
panel.setLayout(overlay);
frame.setContentPane(panel);
// initComponents
initComponents();
// Finalize Frame
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
catch(Exception e) {
e.printStackTrace();
}
}
// Initialize Additional Components
public void initComponents() throws Exception {
test = new JLabel("test");
test.setForeground(Color.WHITE);
frame.add(test);
bg = new JLabel(new ImageIcon(ImageIO.read(getClass().getResource("/ball.png"))));
frame.add(bg);
// What must I do to be able to do this???
test.setLocation(10, 0);
}
// TranslucentPanel Class...
public class TranslucentPanel extends JPanel {
private static final long serialVersionUID = 1L;
public TranslucentPanel() {
setOpaque(false);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g.create();
g2d.setComposite(AlphaComposite.SrcOver.derive(0.0f));
g2d.setColor(getBackground());
g2d.fillRect(0, 0, getWidth(), getHeight());
}
}
}
创建另一个'JPanel'(使其透明) ,适当地设置它的布局管理器,并为其添加组件。考虑根据需要使用复合布局来获得所需的效果。 – MadProgrammer 2014-08-29 11:34:41
*“..以获得所需的效果”*提供ASCII艺术或简单的图形说明GUI如何以默认尺寸显示,并且(如果可调整大小)以额外的宽度/高度显示。 – 2014-08-29 11:38:01
这是我想要的:http://imgur.com/ULxyKv8 我被卡住了顶部的图像。 – 2014-08-29 11:42:35