作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力显示 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/
我是一名优秀的程序员,十分优秀!