Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何查看分层窗格中的组件_Java_Swing_Jpanel_Jlayeredpane - Fatal编程技术网

Java 如何查看分层窗格中的组件

Java 如何查看分层窗格中的组件,java,swing,jpanel,jlayeredpane,Java,Swing,Jpanel,Jlayeredpane,我在JLayeredPane中放置了两个组件,但无法使它们可见。这是一个相当的MCV代码。如何在分层窗格中查看我的JTextField和JLabel import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import java

我在
JLayeredPane
中放置了两个组件,但无法使它们可见。这是一个相当的
MCV
代码。如何在
分层窗格中查看我的
JTextField
JLabel

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EtchedBorder;

public class GUI extends JFrame {
    JFrame mainframe = new JFrame();
    JPanel centrejPanel = new JPanel();
    JTextField keyText;
    JLabel jLabel;

    public GUI() {

    mainframe.setLayout(new BorderLayout());
    mainframe.setSize(1200, 700);
    mainframe.getContentPane().add(centrejPanel, BorderLayout.CENTER);

    keyText = new JTextField("hello");
    keyText.setOpaque(false);
    keyText.setCaretColor(Color.BLACK);
    keyText.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
    jLabel = new JLabel("hello");
    jLabel.setFont(new Font("Palatino", Font.BOLD, 18));
    jLabel.setVerticalAlignment(JLabel.TOP);
    jLabel.setForeground(Color.GRAY);
    JLayeredPane layeredPane = new JLayeredPane();

    layeredPane.add(keyText, 1);
    layeredPane.add(jLabel, 0);

    centrejPanel.getRootPane().add(layeredPane);

    mainframe.setVisible(true);

    }

}


public class Main {

    public static void main(String[] args) {
        GUI gui = new GUI();
    }
}
不需要。框架内容窗格的默认布局管理器是BorderLayout

//mainframe.getContentPane().add(centrejPanel, BorderLayout.CENTER);
不要将空面板添加到框架的内容窗格中。只需将LayeredPane直接添加到内容窗格

keyText.setBounds(0, 50, 100, 20);
...
jLabel.setBounds(0, 150, 100, 20);
JLayeredPane使用空布局,因此您有责任设置添加到分层窗格中的每个组件的大小和位置

//centrejPanel.getRootPane().add(layeredPane);
不要将分层窗格添加到根窗格。我甚至不知道这是否有效,但无论如何,内容窗格只会覆盖分层窗格

//centrejPanel.getRootPane().add(layeredPane);
阅读上Swing教程中的部分,了解所有框架层的结构

mainframe.add(layeredPane);
只需将分层窗格直接添加到框架的内容窗格中。有关更多信息和工作示例,请阅读上的Swing教程

学习新概念或组件时,请始终从教程中的示例开始