Ich habe mal eine Frage, welche wie eine Anfängerfrage erscheinen mag, aber ich komme nicht weiter...
ich habe vor, einen interaktiven Taschenrechner zu programmieren, welchen ich eventuell zum Julfest jemandem schenken kann. Ich wollte dazu ein Gridlayout benutzen, und zunächst einmal die Knöpfe derart anordnen, dass pro Zeile 4 Zahlenknöpfe nebeneinander stehen, was ich (siehe Code) mit einem GridLayout erreichen wollte: GridLayout experimentLayout = new GridLayout(4,4); Dennoch sind pro Zeile 3 Knöpfe nebeneinander zu sehen, ich habe aber keine Ahnung, weshalb.
Darum wollte ich einmal fragen - weiß jemand, woran das liegen könnte?
ich habe vor, einen interaktiven Taschenrechner zu programmieren, welchen ich eventuell zum Julfest jemandem schenken kann. Ich wollte dazu ein Gridlayout benutzen, und zunächst einmal die Knöpfe derart anordnen, dass pro Zeile 4 Zahlenknöpfe nebeneinander stehen, was ich (siehe Code) mit einem GridLayout erreichen wollte: GridLayout experimentLayout = new GridLayout(4,4); Dennoch sind pro Zeile 3 Knöpfe nebeneinander zu sehen, ich habe aber keine Ahnung, weshalb.
Code:
package core;
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame {
int gap, sizer;//Gap zwischen den Tasten, sizer - wie gross soll das Ding werden.
public Main(String name) {
super(name);
gap = 10;
sizer = 7;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
}
public void addComponentsToPane(final Container pane) {
final JPanel compsToCalculate = new JPanel();
final JPanel controls = new JPanel();
GridLayout experimentLayout = new GridLayout(4,4);//???
experimentLayout.setHgap(gap);
experimentLayout.setVgap(gap);
compsToCalculate.setLayout(experimentLayout);
ButtonFactory bFactory = new ButtonFactory();
compsToCalculate.setPreferredSize(new Dimension((int)(((Component) bFactory.getButton(Button.NUMBER)).getWidth() * 2.5) + gap * sizer,
(int)(((Component) bFactory.getButton(Button.NUMBER)).getHeight() * 3.5)+gap * sizer));
//compsToCalculate hat bereits sein Layout.... nun sind es aber gemäss Girdlayout 4 Spalten.
//Dennoch sieht das Ergebnis aus wie im verlinkten Bild - also quasi mit 3 Spalten - wie kann das sein?
for(int i=7;i<10;i++){
JButton num = (JButton) bFactory.getButton(Button.NUMBER);
num.setText(new Integer(i).toString());
compsToCalculate.add(num);
}
for(int i=4;i<7;i++){
JButton num = (JButton) bFactory.getButton(Button.NUMBER);
num.setText(new Integer(i).toString());
compsToCalculate.add(num);
}
for(int i=1;i<4;i++){
JButton num = (JButton) bFactory.getButton(Button.NUMBER);
num.setText(new Integer(i).toString());
compsToCalculate.add(num);
}
JButton applyButton = (JButton) bFactory.getButton(Button.RESULT);
controls.setLayout(new GridLayout(1,1));
controls.setPreferredSize(new Dimension((int)(applyButton.getWidth()),
(int)(applyButton.getHeight())));
controls.add(applyButton);
pane.add(compsToCalculate, BorderLayout.NORTH);
pane.add(new JPanel(), BorderLayout.CENTER);
pane.add(controls, BorderLayout.SOUTH);
}
private static void createAndShowGUI() {
Main frame = new Main("");
frame.addComponentsToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("om.sun.java.swing.plaf.motif.MotifLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
UIManager.put("swing.boldMetal", Boolean.FALSE);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Darum wollte ich einmal fragen - weiß jemand, woran das liegen könnte?