Avatar billede montymus Nybegynder
18. februar 2004 - 20:50 Der er 2 kommentarer og
1 løsning

Grid eller noget andet

Står og skal lave en regnemaskine. Er det nemmest at gå til ved at lave et Grid eller er der en anden metode der er nemmere???
Avatar billede _carsten Nybegynder
18. februar 2004 - 20:54 #1
Det må nemmest at bruge GridLayout, gør alle knapper lige store.
Avatar billede mikkelbm Nybegynder
19. februar 2004 - 00:46 #2
Avatar billede _carsten Nybegynder
19. februar 2004 - 08:24 #3
En kombination af GridLayout og GridBagLayout måske den bedste løsning, kig på nedenstående og vurder det selv.


import javax.swing.*;

public class JFrame_1 extends javax.swing.JFrame {
   
    public JFrame_1() {
        setTitle("Regnemaskine");
        setResizable(false);
        initComponents();
    }
   

    private void initComponents() {
        getContentPane().setLayout(new java.awt.GridBagLayout());
        java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints();
       
        knap = new JButton[10];
       
        for(int i = 0;i < 10; i++){
            knap[i] = new JButton(Integer.toString(i));
        }
       
        display = new JTextField(15);
        display.setHorizontalAlignment(SwingConstants.RIGHT);
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.fill = java.awt.GridBagConstraints.BOTH;
        getContentPane().add(display, gbc);
       
        panel = new JPanel();
        panel.setLayout(new java.awt.GridLayout(4, 4));
        gbc.gridx = 0;
        gbc.gridy = 1;
        gbc.fill = java.awt.GridBagConstraints.BOTH;
        getContentPane().add(panel, gbc);
       
        komma = new JButton(",");
        plusMinus = new JButton("+/-");
        multipl = new JButton("*");
        divider = new JButton("/");
        plus = new JButton("+");
        minus = new JButton("-");
        c = new JButton("C");
        ce = new JButton("CE");
        sum = new JButton("=");
       
       
        panel.add(knap[7]);
        panel.add(knap[8]);
        panel.add(knap[9]);
        panel.add(divider);
        panel.add(knap[4]);
        panel.add(knap[5]);
        panel.add(knap[6]);
        panel.add(multipl);
        panel.add(knap[1]);
        panel.add(knap[2]);
        panel.add(knap[3]);
        panel.add(minus);
        panel.add(knap[0]);
        panel.add(komma);
        panel.add(plusMinus);
        panel.add(plus);
       
        panel2 = new JPanel();
        panel2.setLayout(new java.awt.GridBagLayout());
        pack();

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.fill = java.awt.GridBagConstraints.BOTH;
        c.setPreferredSize(new java.awt.Dimension(panel.getWidth()/4,
                                                    panel.getHeight()/4));
        panel2.add(c, gbc);
       
        gbc.gridx = 1;
        gbc.gridy = 0;
        gbc.gridwidth = 2;
        gbc.fill = java.awt.GridBagConstraints.BOTH;
        ce.setPreferredSize(new java.awt.Dimension( (int)((panel.getWidth()/4) * 1.5),
                                                            panel.getHeight()/4));
        panel2.add(ce, gbc);
       
        gbc.gridx = 3;
        gbc.gridy = 0;
        gbc.gridwidth = 2;
        gbc.fill = java.awt.GridBagConstraints.BOTH;
        sum.setPreferredSize(new java.awt.Dimension((int)((panel.getWidth()/4) * 1.5),
                                                                panel.getHeight()/4));
        panel2.add(sum, gbc);
       
        gbc.gridx = 0;
        gbc.gridy = 2;
        gbc.fill = java.awt.GridBagConstraints.BOTH;
        getContentPane().add(panel2, gbc);
       
        pack();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

    }

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    public static void main(String args[]) {
        new JFrame_1().show();
    }
   
    private JButton[] knap;
    private JButton komma;
    private JButton plusMinus;
    private JButton multipl;
    private JButton divider;
    private JButton plus;
    private JButton minus;
    private JButton c;
    private JButton ce;
    private JButton sum;
    private JPanel panel, panel2;
    private JTextField display;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester