Ich versuche, eine Anwendung mit mehreren Registerkarten zu erstellen, und um den Code überschaubar zu halten, wollte ich den Inhalt für diese Bereiche in separaten Klassen haben, in separaten. Java-Dateien.Aufruf einer neuen Methode aus einer anderen Klasse im selben Paket
Ich habe 3 Dateien aktuell (i) TestLayout.java
package testlayout;
public class TestLayout
{
public static void main(String[] args)
{
MainFrame mainFrameObject = new MainFrame();
mainFrameObject.displayMainFrame();
}
}
(ii) MainFrame.java
package testlayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;
public class MainFrame
{
JFrame masterFrame = new JFrame("JAVA 1.1");
JTabbedPane tabbedPane = new JTabbedPane();
public void displayMainFrame()
{
masterFrame.setSize(1000, 600);
masterFrame.setVisible(true);
masterFrame.setResizable(false);
masterFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
masterFrame.add(tabbedPane);
DisplayReadMe drmObj = new DisplayReadMe();
drmObj.showReadMe();
//showReadMe();
}
/*
public void showReadMe()
{
JPanel panelReadMe = new JPanel(new GridLayout(10,1,8,8));
panelReadMe.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
tabbedPane.addTab("Read Me", null, panelReadMe, "First Tab");
String testreadMeTestMessage = "This is a test message";
JLabel testreadMeLabel = new JLabel(testreadMeTestMessage, SwingConstants.LEFT);
testreadMeLabel.setBorder(BorderFactory.createLineBorder(Color.orange,3));
panelReadMe.add(testreadMeLabel);
}
*/
}
und (iii) DisplayReadMe.java
package testlayout;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
public class DisplayReadMe extends MainFrame
{
public DisplayReadMe()
{
}
public void showReadMe()
{
System.out.println("method showReadMe begins");
JPanel panelReadMe = new JPanel(new GridLayout(10,1,8,8));
panelReadMe.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
tabbedPane.addTab("Read Me", null, panelReadMe, "First Tab");
String testreadMeTestMessage = "This is a test message";
JLabel testreadMeLabel = new JLabel(testreadMeTestMessage, SwingConstants.LEFT);
testreadMeLabel.setBorder(BorderFactory.createLineBorder(Color.orange,3));
panelReadMe.add(testreadMeLabel);
System.out.println("method showReadMe ends");
}
}
Meine Abfrage ist, wenn ich das // showReadMe() auskommentiere; und showReadMe Methode in MainFrame funktioniert es. Die Registerkarte wird dem JFrame hinzugefügt und die Testnachricht wird in der Box angezeigt.
Aber sollte die
DisplayReadMe drmObj = new DisplayReadMe();
drmObj.showReadMe();
Code, nicht das gleiche tun? Rufe ich nicht die showReadMe-Methode aus der DisplayReadMe-Klasse auf, ähnlich wie showReadMe().
Ich habe versucht, Revalidate, Repaint und Threading und nichts scheint die Methode aufrufen und zeigen die Registerkarte und Nachricht?
würde Jede Führung dankbar Vielen Dank PG
Danke Lorenzo für die schnelle Antwort. Deine Lösung hat perfekt funktioniert. PG – pgee75
Gern geschehen :) –