我对编程很新,并且得到了一个可能“愚蠢”的问题。
我有一个程序:3个类。
第一个(主要): - 创建框架 - 制作一个面板(panel1)
第二个: - 将图片设置为panel1的背景
第三: - 从panel1删除图片
当我从主类更改为第三类(每个actionListener,actionPerformed stuff)时,图像被删除。现在我如何告诉我的程序执行第二个类(重新创建图像)。
说实话,我甚至不知道程序如何知道它应该首先排除第二堂课(朋友帮助了我,但正在度假atm)。
感谢您的简短回答!
诚恳 Moritz的
答案 0 :(得分:0)
您似乎并不真正了解Java的工作原理。我建议暂停这个项目并使用较小的项目,直到获得Java的基础知识。 但这是你的决定。
然而,如果你想要答案,那么我将不得不让你失望:这不会是一个简短的答案,因为你需要先了解一些基本概念,然后才能有人帮助你。
好的,首先关闭:你不能执行类。 类基本上只是该相应类的Object应该如何的蓝图。 而对象通常只是数据结构。 因此,举例来说,你可以描述一个具有最大速度或断电能力的类,以及你可能需要的其他数据。
然后,类也可以有方法。
例如,对于汽车,您可能需要方法accelerate(int duration)
和方法break(int duration)
。
然后,您可以在此类中执行这些方法,但不能在类本身中执行。
现在,您还可以使用创建的对象。
例如,在您的代码中,您有一个名为Start
的类,如果我猜错了,只需要表示一个红色按钮,其中包含文本“Start”。
您没有“执行此类”,正如我假设您所假设的那样,而是实例化此类的Object,然后将该Object作为其组件合并到窗口中。
从第164行到第167行的代码中会出现这种情况,并附有说明:
start = new Start("Start", new Color(255,0,0),Color.RED);
center.add(start, BorderLayout.CENTER);
start.setToolTipText("Start!");
start.setFont(new Font("Start", Font.BOLD + Font.ITALIC, 30));
然后(在第271行),通过向其添加ActionListener,您可以告诉此按钮它在点击时应该做什么。此ActionListener具有指令center.remove(start)
。
因此,这意味着一旦被点击,您的开始按钮基本上会从中心面板中移除。
实际上,它有点复杂,因为你的Start-Button基本上只是将ActionEvent激活到ActionListener,你之前在那个Start-Button注册了。 然后这个ActionListener执行你告诉它要做的事情,其中包括从中心面板中删除开始按钮。
为了让这个Start-Button重新开始,你必须再做一次,你最初创建和显示它的方法(第164行 - 第167行)。
但是,在最初点击按钮之前,我不能保证您的窗口看起来会像它一样。 您还必须删除并添加其他组件。
通过OP的英语困难获得德语翻译:
Klassen sind im Grunderelativwörtlichzuverstehen。 Du erzeugst Objekte,die alle irgendwie zu einerKlassegehören,zu einer Art。 还有haben alle Objekte,die zu einerKlassegehören,ähnlicheCharakteristiken。 Das ist insbesondere die Struktur der Daten,undwasfürMethodenman darauf anwenden kann。
Und ein Objekt ist im Grunde einfach nur eine Instanz von dieser Klasse。也是sozusagen ein Ding,是gerade einBeispielfürdieseArt von Dingen ist。 Zum Beispiel ist ein Apfel eine Instanz von derKlasseFrüchte。 Der Apfel hat dannkonkreteAusmaße,einen konkreten Geschmack und all das。还有konkrete Daten。 Dass du eine Frucht essen kannst,war dir schon vorher klar( - > GemeinsameMethodenfüralleObjekte eine Klasse),aber das Ergebnis von dem Essen kommt auf die Daten an(schmeckt,schmeckt nicht; macht satt,macht nicht satt)。
Und in deinem Code hast du ein Objekt start,is eine Instanz der Klasse Start ist。 Die Klasse Start erbt vermutlich von der Klasse Button oder JButton。此外,还有一个开始的ähnlich,wie ein J- / Button das tut。
Und einen Button verwendest du,indem du ihn zu einem GUI-Panelhinzufügst。
Dann macht Java und dein Betriebssystem ein paar magische Dinge,und schon wird er angezeigt。
Dieses Instanziieren von start iniem Quellcode in Zeile 164:start = new Start("Start", new Color(255,0,0), Color.RED);
,dasHinzufügenzueinem GUI-Panel in Zeile 165:center.add(start, BorderLayout.CENTER);
。
另外还有一个名为“中心”的中心,一个名为“中心”的中间人和一个名为“中国人”的人 - (>“BorderLayout.CENTER”)。
Dann in Zeile271fügstdueinen ActionListener zu start hinzu。
Damit sagst du im Grunde,was passieren soll,fall derKnopfgedrücktwurde。 Unter anderem hast du bestimmt,dass center.remove(start)
ausgeführtwerdensoll。同样重要的是开始 - Knopf wieder von diesem center-Panel entfernen soll。
Um diesen start-Knopf wieder zu bekommen,musst du wieder das Gegenteil machen,center.add(start)
。此外,das是Zeile 165 gemacht hast的du schon。
Es wird allerdings vermutlich nicht alles so asehen,wie es mal ausgesehen hat,bevor du das erste Mal auf den Knopf geklickt hast,weil andereElementehinzugefügt/ entfernt wurden。 Das musst du jetzt eben alleswiederrückgängigmachen。 Notfalls kannst du auch einfach alle Elemente von einem Panel entfernen mit panel1.removeAll(),und dann wieder von vorne anfangenalleshinzuzufügen。