2016-11-03 2 views
0

Also, ich arbeite an einem Projekt für meine Java-Klasse. Das Ziel besteht darin, ein grundlegendes GUI-Programm zu erstellen, das Hello World als Zeichenfolge anzeigt und vier Schaltflächen zum Bearbeiten der Zeichenfolge bereitstellt. Etwas wie folgt aus: exampleWie sollte ich ein GridLayout von JButtons unter einem JLabel hinzufügen?

Ich habe noch nicht auf die Manipulation Teil des Programms bekommen noch, da ich nicht mein Fenster richtig egal formatiert zu werden scheinen kann, was ich versuche.

Ich bin in der Lage, meine vier Tasten zur Anzeige zu bekommen, aber alles, was ich geworfen habe, um das JLabel Hello World über den Tasten anzuzeigen, ist völlig fehlgeschlagen.

Dies scheint so sehr einfach zu sein, also fürchte ich, es ist etwas offensichtlich, dass ich vermisse. Ich habe eine Woche lang das Internet durchforstet und viele Informationen darüber gefunden, wie ich das in der Theorie machen kann. Soweit ich das verstehen kann, muss das ein Problem mit meiner Syntax sein.

Bis heute habe ich keine Implementierung gefunden, die irgendetwas in der Richtung tut, was ich tun soll. Das macht mich wahnsinnig, und ich werde mein Fälligkeitsdatum auf jeden Fall überschreiten. Ich muss nur eine Antwort haben! Vielen Dank an alle, die mich in die richtige Richtung weisen können!

Hier ist mein Code in seiner aktuellen Form. Ich fühlte mich, als würde ich damit näher kommen, aber es gibt eine Ausnahme von der Konsole, wenn ich renne. Auch hier wird jede Hilfe sehr geschätzt!

import java.awt.*; 
import javax.swing.*; 

public class HelloWorld 
{ 
    private JButton uppercaseButton; 
    private JButton lowercaseButton; 
    private JButton phraseButton; 
    private JButton resetButton; 

    private JPanel grid; 

    public JPanel ButtonGrid() 
    { 

     JPanel grid = new JPanel(); 

     grid.setLayout(new GridLayout(2, 2)); 
     uppercaseButton = new JButton("Uppercase"); 
     lowercaseButton = new JButton("Lowercase"); 
     phraseButton = new JButton("New Phrase"); 
     resetButton = new JButton("Reset");  

     grid.add(uppercaseButton); 
     grid.add(lowercaseButton); 
     grid.add(phraseButton); 
     grid.add(resetButton); 

     return grid; 
    } 

    private static void createAndShowGUI() 
    { 
     JFrame frame = new JFrame("THIS IS MY TITLE"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JLabel lbl = new JLabel("HELLO WORLD"); 
     lbl.setPreferredSize(new Dimension(175, 100)); 
     frame.getContentPane().add(lbl, BorderLayout.PAGE_START); 

     ButtonGrid b = new ButtonGrid(); 
     b.setVisible(true); 
     b.setSize(300, 200); 
     frame.getContentPane().add(b, BorderLayout.CENTER); 

     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args){ 

     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 

    } 

} 
+0

Wie wäre es mit einer GridLayout, die 1 Spalte und 2 Zeilen hat, dann fügen Sie die JLabel. Danach fügen Sie ein weiteres JPanel hinzu und setzen den Layout-Manager auf ein anderes GridLayout von 2x2. Jetzt müssen Sie nur die 4 Buttons zum JPanel hinzufügen – redxef

Antwort

2
ButtonGrid b = new ButtonGrid(); 

ButtonGrid ist keine Klasse, es ist ein Verfahren der Hello World-Klasse ist, der eine Instanz eines JPanel zurückgibt.

Sie müssen also eine Instanz der HelloWorld Klasse erstellen, so dass Sie die Methode aufrufen kann:

HelloWord hw = new HelloWorld() 
JPanel b = hw.ButtonGrid(); 

Und da „buttonGrid“ ist ein Verfahren sollte nicht mit einem Großbuchstaben beginnen, so dass Sie brauchen benenne die Methode um und benutze dann:

//ButtonGrid b = new ButtonGrid(); 
HelloWord hw = new HelloWorld() 
JPanel b = hw.buttonGrid(); 
0

Danke an beide Vorschläge, um mich in die richtige Richtung zu weisen!

Was am Ende funktionierte, war im Grunde das, was redxef zuerst vorgeschlagen hatte. Camickr hat mir dann weiter geholfen, weil ich über meine Methoden falsch nachgedacht habe. Durch die Kombination beider JPanels in die erste Methode und die Umbenennung in HelloWorld konnte ich einige andere Probleme beheben, die ich ebenfalls hatte.

Ich bin froh darüber berichten zu können, dass das Projekt fertiggestellt wurde und in etwa einer Stunde zur Verfügung stand. Nochmals vielen Dank !!

+0

Froh, die Vorschläge geholfen. Vergessen Sie nicht, die Antwort zu akzeptieren, indem Sie auf das Häkchen klicken, damit die Leute wissen, dass das Problem gelöst wurde. – camickr

Verwandte Themen