gpt4 book ai didi

java - JLayeredPane 组件旁边的白色背景

转载 作者:行者123 更新时间:2023-11-30 04:04:45 33 4
gpt4 key购买 nike

在这里尝试分层 Pane ,但遇到了问题。我有两个 JPanel。我将它们都添加到 JLayeredPane 中 - panel1 足够大,可以占据整个空间,而 panel2 较小,并且使用 FlowLayout 居中。问题是,使用JLayeredPane,当我添加它时,panel2 旁边的背景似乎被漆成白色。这是一张图片来说明。 panel1 为蓝色,panel2 为红色:

正如您所看到的,panel1 的底部仍然是绘制(paint)的,但由于某种原因,侧面只是白色的。 panel2 宽 700 像素并居中,而框架宽 800 像素,所以这绝对不是问题。这是整个类(class):

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

public class Errortest extends JFrame {

public static void main(String[] args) {
//Creating frame and setting the JLayeredPane as contentpane
Errortest frame = new Errortest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLayeredPane pane = new JLayeredPane();
pane.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
pane.setPreferredSize(new Dimension(800,600));
frame.setContentPane(pane);
frame.pack();

//Creating panels
JPanel panel1 = new JPanel();
panel1.setPreferredSize(new Dimension(800,600));
panel1.setBackground(Color.BLUE);
JPanel panel2 = new JPanel();
panel2.setPreferredSize(new Dimension(700,500));
panel2.setBackground(Color.RED);

pane.add(panel1, new Integer(0));
pane.add(panel2, new Integer(1));

frame.setVisible(true);
}
}

希望这不会太令人困惑。据我所知,白色背景来自 JFrame 本身,因为当我执行 frame.setBackground(Color.YELLOW); 时,它会变成黄色。

最佳答案

如果将组件添加到 JLayeredPane,就像使用容器将其添加到空布局:您必须完全指定组件的大小和位置。

import java.awt.*;
import javax.swing.*;

public class ErrorTest extends JFrame {

public static void main(String[] args) {
// Creating frame and setting the JLayeredPane as contentpane
ErrorTest frame = new ErrorTest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JComponent pane = new JLayeredPane();
//pane.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); // Take out FlowLayout
pane.setPreferredSize(new Dimension(800, 600));
frame.setContentPane(pane);

// Creating panels
JPanel panel1 = new JPanel();
panel1.setBackground(Color.BLUE);
panel1.setBounds(0, 0, 800, 600); // <<<---- Set Bounds

JPanel panel2 = new JPanel();
panel2.setBackground(Color.RED);
panel2.setBounds(50, 0, 700, 500); // <<---- Set Bounds

pane.add(panel1, new Integer(1));
pane.add(panel2, new Integer(2));

frame.pack();
frame.setVisible(true);

}
}

enter image description here

关于java - JLayeredPane 组件旁边的白色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028551/

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