2010-04-22 8 views
1

Je suis en train d'assembler la mise en page de base pour un carnet de contacts, et je veux savoir comment je peux faire passer les 3 boutons de test d'un bord à l'autre comme le font les boutons fléchés.JButton Layout Version

private static class ButtonHandler implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
    System.out.println("Code Placeholder"); 
    } 
} 

public static void main(String[] args) { 

    //down button 
    ImageIcon downArrow = new ImageIcon("down.png"); 
    JButton downButton = new JButton(downArrow); 
    ButtonHandler downListener = new ButtonHandler(); 
    downButton.addActionListener(downListener); 

    //up button 
    ImageIcon upArrow = new ImageIcon("up.png"); 
    JButton upButton = new JButton(upArrow); 
    ButtonHandler upListener = new ButtonHandler(); 
    upButton.addActionListener(upListener); 

    //contacts 
    JButton test1Button = new JButton("Code Placeholder"); 
    JButton test2Button = new JButton("Code Placeholder"); 
    JButton test3Button = new JButton("Code Placeholder"); 

    Box box = Box.createVerticalBox(); 
    box.add(test1Button); 
    box.add(test2Button); 
    box.add(test3Button); 

    JPanel content = new JPanel(); 
    content.setLayout(new BorderLayout()); 
    content.add(box, BorderLayout.CENTER); 
    content.add(downButton, BorderLayout.SOUTH); 
    content.add(upButton, BorderLayout.NORTH); 

    JFrame window = new JFrame("Contacts"); 
    window.setContentPane(content); 
    window.setSize(400, 600); 
    window.setLocation(100, 100); 
    window.setVisible(true); 

} 
+1

Avez-vous pensé à utiliser un GridLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/grid.html)? – kloffy

+0

Oui, j'ai essayé et quand je l'ai mis un AWTError lance, car je pense que Box par défaut à BoxLayout. setLayout (LayoutManager l) Lance une AWTError, car une boîte ne peut utiliser qu'un BoxLayout. De http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/Box.html –

+2

Je pense que @kloffy suggère que vous convertissez la 'Box' en' JPanel' qui utilise un 'GridLayout' pour le gestionnaire de disposition. – Ash

Répondre

1

Faisant suite à la suggestion de @ kloffy:

package playground.tests; 

import java.awt.GridLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

import junit.framework.TestCase; 

public class ButtonTest extends TestCase { 

    public void testThreeButtons() throws Exception { 
      JPanel panel = new JPanel(); 
      panel.setLayout(new GridLayout()); 
      JButton button1 = new JButton("A"); 
      JButton button2 = new JButton("B"); 
      JButton button3 = new JButton("C"); 
      panel.add(button1); 
      panel.add(button2); 
      panel.add(button3); 

      JFrame window = new JFrame("Contacts"); 
      window.setContentPane(panel); 
      window.setSize(300, 600); 
      window.pack(); 
      window.setVisible(true); 
      int width = button1.getWidth(); 
      assertEquals(width, button2.getWidth()); 
      assertEquals(width, button3.getWidth()); 
    } 
}