2016-07-01 20 views
-1

Wie ändert man die Farbe eines Rechtecks? Ich möchte es in gelbe Farbe ändern. Ich fügte g.setColor(Color.YELLOW); innerhalb hinzu, aber die Farbe des Rechtecks ​​bleibt noch immer gleich. Kann mir jemand sagen, was ich falsch gemacht habe?Rechteckfarbe in Java GUI ändern

public class SelectSeat { 

    static JFrame frame; 

    public JPanel createContentPane() throws IOException 
    { 

     JPanel totalGUI = new JPanel(); 
     RectDraw rect= new RectDraw(); 
     rect.setPreferredSize(new Dimension(330,35)); //for size 
     totalGUI.setLayout(null); 
     totalGUI.setBackground(Color.WHITE); 
     totalGUI.add(rect); 
     Dimension d = rect.getPreferredSize(); 
     rect.setBounds(100, 20, d.width, d.height); // for location 
     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.BLUE); 
      g.drawString("Movie Sceen", 130, 20); 
      } 


    } 

} 

enter image description here

+0

'Ich habe g.setColor (Color.YELLOW) hinzugefügt;' Ich sehe diesen Aufruf nicht im gebuchten Code. Füllen Sie ein Rechteck nach dem Anruf? – copeg

Antwort

2

Wie die Farbe des Rechtecks ​​ändern? Ich möchte es in gelbe Farbe ändern.

Sie müssen die Farbe auf Gelb setzen, gefolgt von einem Rechteck die Größe der Komponente ausfüllen.

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

Und für das, was ihren Wert:

totalGUI.setLayout(null); 

würde ich gegen die Verwendung von null Layouts empfehlen. Verwenden Sie eine der Aufgabe entsprechende LayoutManager, und denken Sie daran, dass Sie Layouts innerhalb der Komponentenhierarchie verschachteln können.

+0

Danke, es funktioniert :) –

+0

Verwenden Sie LayoutManager anstelle von Null-Layouts? –

+0

Ja. Siehe [diese Antwort] (http://stackoverflow.com/questions/17122338/swing-gridbaglayout-component-resizing/17122843#17122843) für eine Beschreibung, warum Sie weg von Null-Layouts bleiben möchten – copeg