java jpanel图层,java – 一个框架中有多个JPanel /有一个托盘图像和另一个带有组件的图层在顶部...

>避免空布局,这里更麻烦,然后它们是值得的

>将框架设置为BorderLayout

>将标签添加到框架中

>将标签布局设置为BorderLayout

>创建面板并将其opaque属性设置为false

>按正常情况添加其他组件

>将面板添加到标签

查看

举些例子

以示例更新

> panel1是主要背景……

>将panel1的布局设置为BorderLayout

>将lbl1添加到panel1

>将lbl1的布局设置为BorderLayout

>将panel2的布局设置为您想要使用的内容……

>将panel2的opacity属性设置为false(panel2.setOpacity(false))

>将lbl2添加到panel2

>将panel2添加到lbl1

>将panel1添加到您想要的任何内容中.

public class TestLayout17 {

public static void main(String[] args) {

new TestLayout17();

}

public TestLayout17() {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {

}

JFrame frame = new JFrame("Testing");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new BorderLayout());

frame.add(new TestPane());

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

});

}

public class TestPane extends JPanel {

/*

* Background Section

*/

JPanel panel1 = new JPanel();

JLabel lbl1 = new JLabel();

/*

* Component Section

*/

JPanel panel2 = new JPanel();

JLabel lbl2 = new JLabel();

/*

* Dimension Section

*/

Dimension windowSize = new Dimension(800, 600);

Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

public TestPane() {

setLayout(new BorderLayout());

panel1.setLayout(new BorderLayout());

lbl1.setLayout(new BorderLayout());

URL url = getClass().getResource("/bg1.gif");

System.out.println(url);

try {

BufferedImage image = ImageIO.read(url);

Image smaller = image.getScaledInstance(-1, image.getHeight() / 2, Image.SCALE_SMOOTH);

lbl1.setIcon(new ImageIcon(smaller));

} catch (Exception e) {

e.printStackTrace();

}

// lbl1.setIcon(new ImageIcon(url));

panel1.add(lbl1);

add(panel1);

panel2.setLayout(new GridBagLayout());

panel2.setOpaque(false);

lbl2.setBorder(new EmptyBorder(8, 8, 8, 8));

lbl2.setBackground(Color.GREEN);

lbl2.setText("Say hello");;

lbl2.setOpaque(true);

panel2.add(lbl2);

lbl1.add(panel2);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值