[英]JPanel not showing inside JFrame in Java
我知道這個問題已經被問了很多,我已經完成了我的研究,但仍然找不到任何東西。 以下是在任何人不高興之前的證明:
我找到了這個鏈接: https://coderanch.com/t/563764/java/Blank-Frame-Panel
還有這個: 為什么我不應該在添加組件之前調用 setVisible(true) ?
但是第一個問題說使用重繪,我嘗試過沒有修復,倒數第二個和倒數第三個問題談論在我添加的組件之后放置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.