java - JLabel 仅显示 initComponents() 是否被删除

标签 java swing jframe jpanel jlabel

MainFrame.java -JFrame

public MainFrame() {
        initComponents();
        Letters pl = new Letters(this);
        this.setContentPane(pl);
        this.setTitle("Preset Lessons");
        this.pack();
}

Letters.java  -JPanel

public Letters(JFrame frame) {
        initComponents(); 
        JLabel label = new JLabel();
        label.setText("Sample");
        this.add(label);
}

如果 Letters.java 中的 initComponents() 被删除,那么 JLabel 才会出现。如何将新的 JLabel 添加到现有的 JPanel 中?

Letters.java 的 initComponents() 的内容;如果我删除构造函数中的 iniComponents 它将创建 JLabel。

private void initComponents() {

        jLabelLetters = new javax.swing.JLabel();
        jLabelNumbers = new javax.swing.JLabel();
        jLabelFlashcards = new javax.swing.JLabel();
        jLabelStories = new javax.swing.JLabel();
        jComboBox1 = new javax.swing.JComboBox();

        setMaximumSize(new java.awt.Dimension(333333, 333333));
        setMinimumSize(new java.awt.Dimension(800, 600));
        setPreferredSize(new java.awt.Dimension(800, 600));

        jLabelLetters.setFont(new java.awt.Font("Tahoma", 1, 18));
        jLabelLetters.setText("Letters");

        jLabelNumbers.setFont(new java.awt.Font("Tahoma", 0, 14));
        jLabelNumbers.setText("Numbers");
        jLabelNumbers.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jLabelNumbersMouseClicked(evt);
            }
        });

        jLabelFlashcards.setFont(new java.awt.Font("Tahoma", 0, 14));
        jLabelFlashcards.setText("Flashcards");
        jLabelFlashcards.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jLabelFlashcardsMouseClicked(evt);
            }
        });

        jLabelStories.setFont(new java.awt.Font("Tahoma", 0, 14));
        jLabelStories.setText("Stories");
        jLabelStories.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jLabelStoriesMouseClicked(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(25, 25, 25)
                .addComponent(jLabelLetters)
                .addGap(75, 75, 75)
                .addComponent(jLabelNumbers)
                .addGap(76, 76, 76)
                .addComponent(jLabelFlashcards)
                .addGap(75, 75, 75)
                .addComponent(jLabelStories)
                .addGap(89, 89, 89)
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(32, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelFlashcards)
                        .addComponent(jLabelStories))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jComboBox1, javax.swing.GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelLetters)
                        .addComponent(jLabelNumbers)))
                .addGap(565, 565, 565))
        );
    }// </editor-fold>

最佳答案

问题是当使用 GroupLayout 时容器上的所有组件都必须添加到布局的水平和垂直平行组中:

Letters.java 中,您已将 JLabel 添加到容器,但尚未将其附加到布局的 2 组,因此不会将任何内容显示为结果。

要修复此问题,您可以将标签创建移至 initComponents 方法并添加到组中:

layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGap(25, 25, 25)
    .addComponent(jLabelLetters)
    .addGap(75, 75, 75)
    .addComponent(jLabelNumbers)
    .addGap(76, 76, 76)
    .addComponent(jLabelFlashcards)
    .addGap(75, 75, 75)
    .addComponent(jLabelStories)
    .addGap(89, 89, 89)
    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addContainerGap(32, Short.MAX_VALUE))
    .addComponent(label)
);

layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(jLabelFlashcards)
    .addComponent(jLabelStories))
    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
    .addGap(4, 4, 4)
    .addComponent(jComboBox1, javax.swing.GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE))
    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(jLabelLetters)
    .addComponent(jLabelNumbers)))
    .addComponent(label)
    .addGap(565, 565, 565))
);

关于java - JLabel 仅显示 initComponents() 是否被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13314336/

相关文章:

java - JSP中的表达式语言不起作用

Java:使用replaceAll()替换字符串中的所有URL(URL包含 '\')

java - Java 的最佳 HTTP 库?

java - 当用户在我的 JTree 中编辑节点并单击远离节点时获取新的用户对象字符串

java - 修复 JPopupMenu 分隔符 (GTK LaF) 和项目突出显示

java - JTable 从末尾选择行

java - 使用另一个 jPanel 上的按钮修改 jPanel

java - Maven 多模块项目中的 Spring 依赖注入(inject)

java - 如何将 ImageIcon 添加到 JFrame?

java - 我怎样才能关闭一个FrameView java