[英]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.