2016-07-03 19 views
-1

Ich versuche, ein Rechteck und 30 JButton in JPanel totalGUI hinzufügen, aber nur Rechteck angezeigt wird.JToggleButton nicht in GUI

public class SelectSeat { 

    static JFrame frame; 
    int a; 

    public JPanel createContentPane() throws IOException 
    { 

     JPanel totalGUI = new JPanel(); 
     RectDraw rect= new RectDraw(); 
     rect.setPreferredSize(new Dimension(330,35)); 
     totalGUI.setLayout(null); 
     totalGUI.setBackground(Color.WHITE); 
     totalGUI.add(rect); 
     Dimension d = rect.getPreferredSize(); 
     rect.setBounds(100, 20, d.width, d.height); 

     JToggleButton[] ButtonList = new JToggleButton[30]; 

     for(int i = 0; i < 30; i++) { 
      a=i+1; 
      ButtonList[i]= new JToggleButton(""+a); 
      totalGUI.add(ButtonList[i]); 
     } 
     totalGUI.add(rect); 

     return totalGUI; 
    } 

    void setVisible(boolean b) { 
     // TODO Auto-generated method stub 
    } 

    static void createAndShowGUI() throws IOException 
    { 

     JFrame.setDefaultLookAndFeelDecorated(true); 
     frame = new JFrame("Seat Selection"); 

     //Create and set up the content pane. 
     SelectSeat demo = new SelectSeat(); 
     frame.setContentPane(demo.createContentPane()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(535, 520); 
     frame.setLocation(500,220); 
     frame.setVisible(true); 
    } 

    private static class RectDraw extends JPanel 
    { 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      g.setColor(Color.GRAY); 
      g.fillRect(0,0,getWidth(),getHeight()); 
      g.setColor(Color.BLUE); 
      g.drawString("Movie Sceen", 130, 20); 
      } 


    } 

} 

enter image description here

Neueste Ausgabe

enter image description here


BuyTicket

next.addActionListener(new ActionListener() // go to SelectSeat class 
     { 
      public void actionPerformed(ActionEvent e) 
       { 
       SelectSeat back = new SelectSeat(); 
       back.setVisible(true); 
        setVisible(false); 
        frame.dispose(); 
       } 
     }); 

SelectSeat

public class SelectSeat { 

    public static void main(String[] atrg) throws IOException { 
    JFrame meinJFrame = new JFrame(); 
    meinJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    meinJFrame.setSize(800, 600); 
    meinJFrame.setVisible(true); 
    meinJFrame.add(new RectDraw()); 
    JPanel over = new JPanel(new GridLayout(2, 1)); 
    over.add(new RectDraw()); 
    meinJFrame.setTitle("Cinemax-Beispiel"); 
    JPanel panel = new JPanel(); 
    panel.setLayout(new GridLayout(6, 5)); 
    for (int i = 1; i <= 30; i++) { 
     panel.add(new JToggleButton("Seat :" + i)); 
    } 
    over.add(panel); 
    meinJFrame.add(over); 
    } 

    public void setVisible(boolean b) { // auto-generated 
     // TODO Auto-generated method stub 

    } 



} 

class RectDraw extends JPanel { 
    @Override 
    protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setColor(Color.GRAY); 
    g.fillRect(0, 0, getWidth(), getHeight()); 
    g.setColor(Color.WHITE); 
    g.drawString("Movie Sceen", 130, 20); 
    } 
}  
+1

Instanzen sollten nicht mit Großbuchstaben beginnen - es sollte 'sein buttonList' . In diesem Szenario würde ich wahrscheinlich ein internes JPanel mit einem GridLayout erstellen, alle diese Radio-Buttons hinzufügen und dann das Panel zum 'totalGUI' hinzufügen. Schließlich würde ich das 'TotalGUI'-Layout auf SpringLayout setzen, also würden sich die Breite und Höhe Ihres Rechtecks ​​und der Schaltflächen abhängig von der Größe von JFrame anpassen. –

+0

1) Für bessere Hilfe früher, post ein [MCVE] oder [Kurze, selbständige, korrekte Beispiel] (http://www.sscce.org/). Dieser Code benötigt mindestens die Impot-Anweisungen und eine 'main (String []) 'Methode, um es auf dem Bildschirm, um die C, V oder E von MCVE. 2) Bereitstellung von ASCII-Grafiken oder einer einfachen Zeichnung des * beabsichtigten * Layouts der GUI bei minimaler Größe und wenn sie in der Größe veränderbar ist, mit mehr Breite und Höhe. –

+0

@AndrewThompson Muss man 'main (String [])' haben? Ich habe viele Klassen ohne 'main', aber sie können trotzdem laufen. –

Antwort

2

Der Punkt ist, dass Sie nicht gut organisieren die JPanel Sie sollten Ihre Platten in dieser Form organisieren:

----JPanel----------------------------| 
| ---Screen el---------------------- | 
| |    txt     | | 
| |         | | 
| ----------------------------------- | 
| ---seats -------------------------- | 
| |seat1 seat2 .. ... ... ... | | 
| |seat11 seat12 .. ... ... .. | | 
| |... ... ...      | | 
| ----------------------------------- | 
--------------------------------------- 


public class Mango { 

    public static void main(String[] atrg) throws IOException { 
    JFrame meinJFrame = new JFrame(); 
    meinJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    meinJFrame.setSize(800, 600); 
    meinJFrame.setVisible(true); 
    meinJFrame.add(new RectDraw()); 
    JPanel over = new JPanel(new GridLayout(2, 1)); 
    over.add(new RectDraw()); 
    meinJFrame.setTitle("Cinemax-Beispiel"); 
    JPanel panel = new JPanel(); 
    panel.setLayout(new GridLayout(6, 5)); 
    for (int i = 1; i <= 30; i++) { 
     panel.add(new JToggleButton("Seat :" + i)); 
    } 
    over.add(panel); 
    meinJFrame.add(over); 
    } 
} 

class RectDraw extends JPanel { 
    private static final long serialVersionUID = -6507364980760764676L; 

    @Override 
    protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setColor(Color.GRAY); 
    g.fillRect(0, 0, getWidth(), getHeight()); 
    g.setColor(Color.WHITE); 
    g.drawString("Movie Sceen", 130, 20); 
    } 
} 

enter image description here

+0

Ich habe versucht, Ihren Code auszuführen, aber die JToggle-Schaltfläche wurde nicht angezeigt. Überprüfen Sie meinen bearbeiteten Post. Danke –

+0

Ist dein Screenshot fertig? –

+0

Ja, es zeigt nur "Film" in 'Jpanel' –

0

Sie müssen Grenzen der Tasten angeben, da Sie null Layout-Manager verwenden.

+2

* "Sie müssen .." * ... verwenden Layouts, um Rätselraten zu beseitigen und eine robuste, zuverlässige GUI zu erstellen. –

+0

@AndrewThompson Ich antwortete, warum es nicht angezeigt wird, nicht, was der beste Ansatz ist. Ich denke, ich hätte am Ende "... für die Buttons" hinzufügen sollen, damit sich der Großcodiermeister wie Sie selbst freut. Ich habe einen Kommentar unter der Frage geschrieben, wie ich das mit Layoutmanagern machen soll. –

+1

* "Ich habe einen Kommentar unter der Frage geschrieben, wie ich es mit Layout-Managern machen würde."* Wenn Sie Ihrer Antwort Code hinzufügen, um diesen Ansatz zu demonstrieren, entferne ich möglicherweise den Downvote. Wenn der Code gut genug ist, könnte ich sogar upbooten." Tipps "geben, die einen Neuling fälschlicherweise denken lassen, ein" Null "-Layout sei praktikabel –