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;
}