所以我是新手,并且已经学习了很多,感谢这个网站,但是现在我已经展示了如何正确地创建和绘制图形...我无法显示JPanels I&# 39; ve在另一个班级创建。 我可以从另一个类中绘制,就像在drawString中一样,但是我希望JButton在我的BorderLayout.NORTH中的JPanel上;我只想画到我的mainGame是BorderLayout.CENTER。 我不太确定如何。
这是主要的课程。
//Imports
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*;
//This is the main game it self; where the foundations of all actions will occur.
public class RPGClicker
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
//Calls the mainGameScene method.
mainGameScene();
}
});
}
//This builds the inital game it self.
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();
//Adding each of the panels to their allocated spots in the window.
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。
//Imports
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*;
//This allows the creation of instances for the navBarDisplayInstance.
class navBarDisplayPanel extends JPanel
{
JButton yourStory;
public Dimension getPreferredSize()
{
return new Dimension(1280, 256);
}
//This allows the drawing of graphics.
private void navBarDisplayPanel()
{
yourStory = new JButton("Your Story");
add(yourStory);
}
}
代码编译但是当我运行时我看不到任何东西,北条是完全空的。任何人都可以提出任何想法吗?
答案 0 :(得分:1)
我假设:
private void navBarDisplayPanel()
是您认为类navBarDisplayPanel
的构造函数确实是什么的。
作为构造函数,如果要从外部类创建对象,则不应将其设为私有,应删除void
标记,因为这不是常规方法,并且(可选但不是可选的) )你应该用第一个字母作为大写来命名你所有的类(和它们的构造函数)。
为了使你的代码有效,我想你只需要重命名:
private void navBarDisplayPanel(){
yourStory = new JButton("Your Story");
add(yourStory);
}
到此:
public navBarDisplayPanel(){
yourStory = new JButton("Your Story");
add(yourStory);
}
但正如我所指出的那样,尝试遵循Java Naming Conventions(以及其他惯例)以避免将来出现错误。