Java 我如何修复我的JLabel没有出现在预期的JPanel中?(代码使用JLayeredPane)
我目前正在做一个GUI项目,如下所示。在设计UI时,我的JLabel遇到了一个问题。我一运行程序它就不会出现Java 我如何修复我的JLabel没有出现在预期的JPanel中?(代码使用JLayeredPane),java,swing,Java,Swing,我目前正在做一个GUI项目,如下所示。在设计UI时,我的JLabel遇到了一个问题。我一运行程序它就不会出现 public class Main extends JFrame { private JFrame mainFrame; private JPanel parentPanel; private JPanel sidePanel; private JLayeredPane layer; private JPanel info, tri, sqr, rect, circ; privat
public class Main extends JFrame {
private JFrame mainFrame;
private JPanel parentPanel;
private JPanel sidePanel;
private JLayeredPane layer;
private JPanel info, tri, sqr, rect, circ;
private JLabel infoTF, triLabel, sqrTF, circTF;
public static void main(String[] args) {
Main show = new Main();
}
public Main() {
mainFrame = new JFrame("Geometric Shapes Computation");
layer = new JLayeredPane();
layer.setLayout(null);
layer.setBounds(0,0,700,600);
Color standard = new Color (76 ,41, 211);
Color fg = new Color (204, 204, 204);
Font items = new Font("Century Gothic", Font.BOLD, 12);
triLabel = new JLabel("Triangle");
triLabel.setFont(items);
triLabel.setBackground(standard);
triLabel.setForeground(fg);
triLabel.setVisible(true);
tri = new JPanel();
tri.add(triLabel);
tri.setBackground(Color.ORANGE);
tri.setLayout(null);
tri.setBounds(0, 215, 200, 70);
sqr = new JPanel();
sqr.setBackground(standard);
sqr.setLayout(null);
sqr.setBounds(0, 315, 200, 70);
parentPanel = new JPanel();
parentPanel.setLayout(null);
parentPanel.setSize(700, 600);
sidePanel = new JPanel();
sidePanel.setLayout(null);
sidePanel.setBounds(0,0,200, 600);
sidePanel.setBackground(standard);
sidePanel.add(tri);
layer.add(parentPanel, JLayeredPane.DEFAULT_LAYER);
layer.add(sidePanel, JLayeredPane.PALETTE_LAYER);
layer.add(tri, JLayeredPane.MODAL_LAYER);
mainFrame.add(layer);
mainFrame.setSize(700, 600);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setResizable(false);
mainFrame.setVisible(true);
}
}
如果我正确理解您的问题,您只是在显示标签时遇到问题,我可以通过注释掉tri.setLayout(null)来显示标签
这可以为我显示文本。希望这会有所帮助。为什么要使用分层窗格?为什么到处都使用空布局。Swing设计用于布局管理器。您的框架和分层窗格如何都是(600700)。JFrame有一个标题栏和边框,所以两者的大小不可能相同。标签的大小为(0,0),因此没有任何可绘制的内容。这就是为什么要使用布局管理器。布局经理会计算尺寸/位置,所以你不必这么做。我对这个话题还不太熟悉,我为我在这里犯的错误道歉。希望我能在完成这个项目后做得更好。
tri = new JPanel();
tri.add(triLabel);
tri.setBackground(Color.ORANGE);
//tri.setLayout(null);
tri.setBounds(0, 215, 200, 70);