我是初学程序员,所以这是一个初学者问题/项目。我有一个名为Screen的类,它是一个用JTabbedPane制作的简单GUI,所有选项卡都是空白的。在第一个选项卡中," actionPanel",我有一个简单的JLabel,其中包含文本"这是一个测试。"这个JLabel称为dA,还有第二个空的称为dB。
我还有一个类,字符,用于具有参数名称,HP的对象,以及该字符对应图像的位置的URL。
我希望能够调用一个方法setupDialogueEnvironment(),这个方法到目前为止只应该更改由Screen创建的JLabel以包含一个字符的相应图像而不是& #34;这是一项测试。" 但是,当我尝试执行此操作时,我一直收到空指针异常。我相信这与我正在使用的java.net.URL或者ImageIcons有关。我不确定。我知道JLabel确实出现了它只是说"这是一个测试",所以它与图像无关。
我想知道我是不是正确使用了repaint()方法。您将在我的代码中看到我尝试在每个JComponent上调用repaint(),我可以看看它是否有用,但事实并非如此。在调用方法setupDialogueEnvironment()之后,我的屏幕仍显示"这是测试。"
提前感谢您的帮助。这是我的代码,我将澄清下面代码的几点。
package Package1;
import javax.swing.*;
import java.awt.*;
import java.net.URL.*;
public class Screen {
// Global declaration of GUI elements
JFrame frame;
static JPanel actionPanel, onPerson, wt, mats, craft, quests, notes;
static JTabbedPane mtp, inventory;
// Image URLs and their corresponding ImageIcons and JLabels
static JLabel dA = new JLabel("THIS IS A TEST");
static JLabel dB = new JLabel() ; // dialogue member A's and B's JLabels
static ImageIcon diA = new ImageIcon();
static ImageIcon diB = new ImageIcon(); // ImageIcons for dialogue members A and B
public Screen()
{
// Set up the frame
// Create tabbed panes and panels
// Add tabs to JTabbedPanes
// Finalize some JFrame things, like setDefaultCloseOperation
}
// the method in question
public void setupDialogueEnvironment(URL urla, URL urlb)
{
diA = new ImageIcon(urla);
diB = new ImageIcon(urlb);
dA.setBackground(Color.RED);
dB.setBackground(Color.BLUE);
dA = new JLabel(diA);
dB = new JLabel(diB);
actionPanel.add(dA);
actionPanel.add(dB);
dA.setSize(300, 300);
dB.setSize(300, 300);
dA.setLocation(100, 100);
dB.setLocation(600, 100);
dA.setVisible(true);
dB.setVisible(true);
//repaint-- how do I get it to work?
frame.repaint();
actionPanel.repaint();
mtp.repaint();
dA.repaint();
dB.repaint();
}
}
我制作了两个Character对象,每个对象都有正确复制的相应图像文件路径。这个代码如下。
import package1.*;
public class HomesteadRunner {
public static void main(String[] args)
{
// Create characters and attack. See if HP adjusts properly.
Skills skiller = new Skills();
Screen screen = new Screen();
Character ca = new Character("Bob", 100, Screen.class.getResource("C:\\Users\\jleekas\\IdeaProjects\\HomesteadV1\\src\\Resources\\imgres.jpg"));
Character cb = new Character("Billy", 100, Screen.class.getResource("C:\\Users\\jleekas\\IdeaProjects\\HomesteadV1\\src\\Resources\\imgres-1.jpg"));
// Create a dialogue state
DialogueState ds = new DialogueState();
ds.setup(ca, cb, screen);
}
}
非常感谢你的帮助和帮助。提前建议。