gpt4 book ai didi

java - 如何将 JPanel 实例传递给另一个类?

转载 作者:行者123 更新时间:2023-12-01 09:58:33 27 4
gpt4 key购买 nike

我正在努力显示 JPanel我在另一个类中创建的实例。

我可以从另一个类(class)抽取,但我想要 JButton JPanel 上的 s在我的BorderLayout.NORTH ;我只想绘制我的 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,但现在我只能绘制到其他面板;我希望它们包含文本字段和 JButton。

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 的构造函数的实际内容。

作为构造函数,如果您想从外部类中使用它创建对象,则不应将其设置为私有(private),您应该删除 void 标记,因为这不是常规方法,并且(可选但不是可选的)你应该用第一个字母大写来命名所有的类(及其构造函数)。

为了使你的代码正常工作,我想你只需要重命名它:

private void navBarDisplayPanel(){
yourStory = new JButton("Your Story");
add(yourStory);
}

对此:

public navBarDisplayPanel(){
yourStory = new JButton("Your Story");
add(yourStory);
}

但正如我所指出的,请尝试遵循 Java Naming Conventions (以及其他约定)以避免将来出现错误。

关于java - 如何将 JPanel 实例传递给另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com