2017-08-25 1 views
0

Ich versuche eine Schnittstelle mit Swing zu erstellen.Die Tasten sind so eingestellt, dass sie linksbündig sind, aber immer noch zentriert angezeigt werden.

Dies ist mein Code:

public class JavaApplication30 
{ 
    public static void main(String[] args) throws IOException 
    { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.X_AXIS)); 
     frame.setPreferredSize(new Dimension(1280, 720)); 
     frame.setResizable(false); 

     frame.setContentPane(new JPanel() 
     { 
     BufferedImage image = ImageIO.read(new File("C:\\Users\\user\\Documents\\NetBeansProjects\\JavaApplication29\\src\\eila.jpg")); 
     @Override 
     public void paintComponent(Graphics g) 
     { 
      super.paintComponent(g); 
      g.drawImage(image, 0, 0, 1280, 720, this); 
     } 
     }); 

     JPanel a = new JPanel(); 
     a.setAlignmentX(Component.LEFT_ALIGNMENT); 
     a.setPreferredSize(new Dimension(150, 500)); 
     a.setMaximumSize(new Dimension(150, 500)); 
     a.setOpaque(false); 

     a.add(Box.createRigidArea(new Dimension(5,50))); 
     JButton amico = new JButton("Amico"); 
     a.add(amico); 
     a.add(Box.createRigidArea(new Dimension(5,20))); 
     amico.setPreferredSize(new Dimension(150, 50)); 
     JButton bello = new JButton("Bello"); 
     a.add(bello); 
     a.add(Box.createRigidArea(new Dimension(5,20))); 
     bello.setPreferredSize(new Dimension(150, 50)); 
     JButton compagno = new JButton("Compagno"); 
     a.add(compagno); 
     compagno.setPreferredSize(new Dimension(150, 50)); 

     frame.getContentPane().add(a); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 

class ImagePanel extends JComponent { 
    private Image image; 
    public ImagePanel(Image image) { 
     this.image = image; 
    } 
    @Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.drawImage(image, 0, 0, this); 
    } 
} 

ich die Schaltfläche Ausrichtung nach links, aber meine Tasten sind immer noch zentriert.

enter image description here

Dies ohne paintcomponent für den Hintergrund ist nicht geschehen.

Warum ist das? Wie kann ich die Tasten auf der linken Seite ausrichten?

Antwort

1

Ich habe Ausrichtung nach links, aber meine Tasten sind

Die setAlignmentX (...) ist nur ein Hinweis dafür, wie die „Panel“ sollte in seinem übergeordneten Panel zentriert ausgerichtet werden. Wenn Sie die Schaltflächen zum Panel hinzufügen, kommt es auf den Layout-Manager des Panels an.

Standardmäßig verwendet ein JPanel eine FlowLayout. Wenn Sie eine FlowLayout erstellen, sind die Komponenten, die standardmäßig hinzugefügt werden, centered aligned im Raum des Panels.

Ändern Sie den Layout-Manager zu einem FlowLayout mit den Komponenten left aligned. Lesen Sie die API FlowLayout, um den richtigen Konstruktor zu verwenden.

Sie können auch eine Standardlücke zwischen den Schaltflächen bereitstellen, sodass die Box.createRigidArea (...) nicht benötigt wird. Die Komponente soll wirklich verwendet werden, wenn Sie eine BoxLayout verwenden.

+0

was Sie gesagt, funktioniert, aber ich habe das gleiche Problem mit dem Hintergrundbild, können Sie mir einen Weg, um es einzustellen. – carelli99

+0

und kann ich SetVgap mit meinem Code verwenden? – carelli99

Verwandte Themen