Ich bin ein Newb, der versucht, meinen ersten Layoutmanager in Schwung zu bringen und kann mein JPanel nicht zur Anzeige bringen und das Fenster wird minimiert. Ich habe den JavaDoc konsultiert, aber ich kann nicht herausfinden, was ich falsch mache. Ich möchte nur einen Zeiger in die richtige Richtung. Ich verbinde mich auch mit meiner MySQL-Datenbank, aber das ist für ein anderes Mal. Jede Beratung wäre sehr geschätzt :)Warum wird mein JPanel nicht angezeigt?
Hier ist mein Code
package learn;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import java.sql.*;
import javax.swing.JPanel;
import java.awt.BorderLayout;
public class TestGUI3 extends JFrame implements ActionListener
{
JRadioButton rb1, rb2, rb3;
JFrame f;
JButton b;
JPanel myFirstPanel;
public TestGUI3()
{
f = new JFrame("Welcome to Ballon d'or , created by Darren Estcourt");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFirstPanel = new JPanel();
f.add(myFirstPanel);
rb1 = new JRadioButton("Start New Game");
rb2 = new JRadioButton("Load Game");
rb3 = new JRadioButton("Quit");
myFirstPanel.add(rb1);
myFirstPanel.add(rb2);
myFirstPanel.add(rb3);
ButtonGroup bg=new ButtonGroup();
bg.add(rb1);
bg.add(rb2);
bg.add(rb3);
b = new JButton("OK");
myFirstPanel.add(b);
b.addActionListener(this);
f.setLayout(new BorderLayout());
f.pack();
f.setVisible(true);
}
@Override public void actionPerformed(ActionEvent e)
{
if(rb1.isSelected())
{
f.dispose();
ManagerName test = new ManagerName();
test.getFrame().setVisible(true);
}
if(rb2.isSelected())
{
JOptionPane.showMessageDialog(f,"Load Game");
}
if(rb3.isSelected())
{
System.exit(0);
}
}
public static void main(String[] args)
{
try
{
String myDriver = "org.gjt.mm.mysql.Driver";
String myUrl = "jdbc:mysql://localhost:3306/ballondor?autoReconnect=true&useSSL=false";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(myUrl, "root", "Lucia290907");
String query = "SELECT * FROM clubInfo";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
while (rs.next())
{
int TeamID = rs.getInt("TeamID");
String TeamName = rs.getString("TeamName");
// print the results
System.out.format("%s, \n", TeamName);
} // end while loop
st.close();
} // end try
catch (Exception e)
{
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
TestGUI3 test = new TestGUI3();
test.setVisible(true);
}
});
}
}
Gibt es einen Grund, dass Ihre Klasse ein JFrame erweitert sowie eines initialisiert in seinem Körper? – paul
Wo ist Ihre Hauptmethode, die diesen JFrame instanziiert? Dann: Sie möchten, dass wir unsere Zeit nutzen, um Ihnen zu helfen, also verbringen Sie bitte die paar Minuten, die es braucht, um Ihren Quellcode richtig einzurücken/zu formatieren - danke! – GhostCat
Anfangs hatte ich nur eine Instanz von JFrame und initialisierte es in meinem Konstruktor. Ich lese jedoch über die Verwendung des EDT und aus irgendeinem Grund kann ich nicht einfach meinen Konstruktor über den EDT aufrufen, weil ich ein "Can not find" -Symbol für die SetVisible() -Methode hatte. Also, um dies zu beheben, habe ich die JFrame-Klasse erweitert und hoffentlich ... das Programm läuft auf dem EDT. –