[英]How do I get an instance of a class that extends a JPanel to display in another classes JPanel?
[英]How to pass JPanel instance to another class?
我正在努力顯示我在另一個類中創建的JPanel
實例。
我可以從另一個類中繪制,但我希望在我的BorderLayout.NORTH
的JPanel
上有JButton
; 我只想繪制我的mainGame
,即BorderLayout.CENTER
。 我不確定如何實現這一目標。
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*;
public class RPGClicker {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
mainGameScene();
}
});
}
private static void mainGameScene() {
JFrame window;
mainGamePanel mainGameInstance;
statusPanel statusInstance;
playerInfoPanel playerInfoInstance;
navBarDisplayPanel navBarDisplayInstance;
window = new JFrame("RPGClicker: An Unknown Quest!");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new BorderLayout());
mainGameInstance = new mainGamePanel();
statusInstance = new statusPanel();
playerInfoInstance = new playerInfoPanel();
navBarDisplayInstance = new navBarDisplayPanel();
window.add(mainGameInstance, BorderLayout.CENTER);
window.add(statusInstance, BorderLayout.SOUTH);
window.add(playerInfoInstance, BorderLayout.EAST);
window.add(navBarDisplayInstance, BorderLayout.NORTH);
window.pack();
window.setLocationRelativeTo(null);
window.setVisible(true);
}
}
我可以繪制mainGamePanel
,但現在我只能繪制到我的其他面板; 我希望它們包含文本字段和 JButtons。
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*;
class navBarDisplayPanel extends JPanel {
JButton yourStory;
public Dimension getPreferredSize() {
return new Dimension(1280, 256);
}
private void navBarDisplayPanel() {
yourStory = new JButton("Your Story");
add(yourStory);
}
}
代碼可以編譯,但運行時什么也沒出現。 北吧完全是空的。 任何人都可以提供任何想法嗎?
我假設這個:
private void navBarDisplayPanel()
是您認為類navBarDisplayPanel
的構造函數的真正navBarDisplayPanel
。
作為構造函數,如果您想從外部類使用它創建對象,則不應讓它成為私有的,您應該刪除void
標記,因為這不是常規方法,並且(可選但非可選)您應該命名所有類(及其構造函數),首字母大寫。
為了使您的代碼正常工作,我想您只需要重命名即可:
private void navBarDisplayPanel(){
yourStory = new JButton("Your Story");
add(yourStory);
}
對此:
public navBarDisplayPanel(){
yourStory = new JButton("Your Story");
add(yourStory);
}
但正如我所指出的,盡量遵循Java 命名約定(以及其他約定)以避免將來出現錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.