簡體   English   中英

JPanel 未在 Java 中的 JFrame 內顯示

[英]JPanel not showing inside JFrame in Java

我知道這個問題已經被問了很多,我已經完成了我的研究,但仍然找不到任何東西。 以下是在任何人不高興之前的證明:

我找到了這個鏈接: https://coderanch.com/t/563764/java/Blank-Frame-Panel

這: 將面板添加到框架,但不顯示應用程序何時運行

還有這個: 為什么我不應該在添加組件之前調用 setVisible(true) ?

這: JPanel 沒有顯示在 JFrame 中?

但是第一個問題說使用重繪,我嘗試過沒有修復,倒數第二個和倒數第三個問題談論在我添加的組件之后放置setVisible

最后一個談到讓用戶JPanelArt成為JPanel的擴展(這樣做)而不是JFrame並且不在框架構造函數中制作框架(也沒有完成)

每當我運行它時,我都會得到一個空白框架,就好像從未添加過面板一樣。

如果我錯過了這些鏈接中的某些內容,我深表歉意。 無論如何,下面是我的課程:

GUI.java(擴展 JFrame)

package javaapplication2;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUI extends JFrame{

public GUI(String name) {
    super(name);

    getContentPane().setLayout(null);

    JPanel myPanel1 = new GUIPanel();
    myPanel1.setLocation(20, 20);
    getContentPane().add(myPanel1);

    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();
    setResizable(true);
}

public static void main(String[] args) {
    JFrame frame = new GUI("Game");
    frame.setVisible(true);
}
}

GUIPanel.java(擴展 JPanel)

package javaapplication2;

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


public class GUIPanel extends JPanel {

JButton start;
JButton inspect1;
JButton inspect2;
JButton inspect3;
JButton suspect;

public GUIPanel() {
    setLayout(new BorderLayout());

    start = new JButton("Start Game");
    inspect1 = new JButton("Inspect 1");
    inspect2 = new JButton("Inspect 2");
    inspect3 = new JButton("Inspect 3");
    suspect = new JButton("Choose Suspect");

    add(start, BorderLayout.WEST);
    add(inspect1, BorderLayout.WEST);
    add(inspect2, BorderLayout.WEST);
    add(inspect3, BorderLayout.WEST);
    add(suspect, BorderLayout.WEST);

}
}

我知道這很簡單,但那是因為我正在按照我的講師的教程來掌握事情的竅門,因為我之前使用了一個 GUI 構建器,這個社區中的某個人向我指出這不是一個好的開始(非常正確!)

當您調用getContentPane().setLayout(null)時,問題出在您的GUI class 中。 由於此方法調用,您的 JFrame 沒有顯示任何內容。 如果你刪除它,你的元素應該會出現。

我還注意到您將每個 JButton 設置為具有BorderLayout.WEST約束。 這很可能會將您的 JButton 疊放在一起,並且只渲染其中一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM