2010-05-09 8 views
0

Disons que je voudrais créer une calculatrice simple. Il se compose de 3 champs. Champ de texte pour afficher le résultat, champ avec cases à cocher pour sélectionner le système et le champ avec les nombres.Comment le BoxModel de swing fonctionne-t-il?

Quel type de composant dois-je utiliser pour chaque élément? Comment puis-je positionner des éléments dans ma fenêtre? Comment puis-je positionner des éléments à l'intérieur d'un composant (c.-à-d. Des cases à cocher)?

C'est ce que j'essaie d'atteindre.

http://img28.imageshack.us/img28/7691/lab8c.jpg

Répondre

2

J'utiliser

  • JTextField pour le nombre fenêtre
  • JRadioButton pour les boutons radio et
  • JButton pour les boutons.

La disposition des composants doit être reportée dans un gestionnaire de disposition. (Jetez un oeil à Using Layout Managers Dans ce cas, un GridLayout et/ou un GridBagLayout ferait bien

Ce code devrait vous aider à démarrer:..

import java.awt.*; 

import javax.swing.*; 


public class FrameTest { 

    public static void main(String[] args) { 
     final JFrame f = new JFrame("Frame Test"); 

     JPanel panel = new JPanel(new GridBagLayout()); 
     panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); 

     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.gridx = 0; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.weightx = 1.0; 
     panel.add(new JTextField(), gbc); 


     JPanel numSysPanel = new JPanel(new GridLayout(1, 3)); 
     numSysPanel.setBorder(BorderFactory.createTitledBorder("Number System")); 
     numSysPanel.add(new JRadioButton("oct")); 
     numSysPanel.add(new JRadioButton("dec")); 
     numSysPanel.add(new JRadioButton("hex")); 
     panel.add(numSysPanel, gbc); 

     JPanel buttons = new JPanel(new GridLayout(4, 4, 2, 2)); 
     for (int i = 0; i < 16; i++) 
      buttons.add(new JButton("" + i)); 
     panel.add(buttons, gbc); 

     f.setContentPane(panel); 
     f.pack(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setVisible(true); 
    } 
} 

enter image description here

0

Tout d'abord, vous commencez avec déterminer, qui LayoutManager vous devez utiliser, pour organiser vos trois champs GridBagLayout va certainement faire ce que vous voulez, mais il est assez difficile à programmer.Vous pouvez essayer de sortir avec le plus simple BorderLayout, ce qui rendra votre application étrange, tandis que resizin g. Vous pouvez également utiliser GroupLayout. BoxLayout, GridLayout et FlowLayout ne sont pas ce que vous voulez utiliser. Maintenant, vous avez beaucoup d'options, pour vous présenter les meilleurs éléments.

Utilisez un JTextField pour le résultat. Utilisez JCheckBox pour les cases à cocher, que vous mettez à l'intérieur un JPanel avec une bordure gravée (via JPanel.setBorder(BorderFactory.createEtchedBorder())) et un FlowLayout. Ne pas oublier de mettre les cases à cocher dans un CheckboxGroup. Enfin, utilisez un JPanel pour grouper les JButton s pour les boutons, euhh. Utilisez un GridLayout (5 lignes, 4 colonnes) pour organiser ces boutons.