Brauche Hilfe! Layout

  • Themenstarter Themenstarter Jannik
  • Beginndatum Beginndatum
J

Jannik

Hallo,

schreibe grade an einem Taschenrechner für die Schule und bekomme es einfach nicht hin oberhalb des Tastenfeldes ein mehrzeiliges Textfield bzw. mehrere Textfields unterneinander zu platzieren. Hier mal der Anfang des Programmcodes: (könnte sein das da schon alles verwurschtelt ist, da ich viele Sachen ausprobiert habe)

Java:
public Grafikausgabe () 
  {
	
	TestActionListener actionListener = new TestActionListener();
	setLayout(new BorderLayout());
    setTitle("Taschenrechner");
    setSize(210,300);
    addWindowListener(new TestWindowListener());
    TextField textfield = new TextField( "", 30 );
    textfield.setEditable(false);
    add( textfield, BorderLayout.NORTH );
    actionListener.setTextField(textfield);
    Panel eingabefeld = new Panel();
    
    eingabefeld.setLayout(new GridLayout(6, 4));
	  Button klammerauf = new Button("(");
	  eingabefeld.add(klammerauf);
	  klammerauf.addActionListener(actionListener);
	  Button klammerzu = new Button(")");
	  eingabefeld.add(klammerzu);
	  klammerzu.addActionListener(actionListener);
	  Button C = new Button("C");
	  eingabefeld.add(C); 
	  C.addActionListener(actionListener);
	  Button AC = new Button("AC");
	  eingabefeld.add(AC);
	  AC.addActionListener(actionListener);
	  Button hoch = new Button("^");
	  eingabefeld.add(hoch);
	  hoch.addActionListener(actionListener);
	  Button wurzel = new Button("Wurzel");
	  eingabefeld.add(wurzel);
	  wurzel.addActionListener(actionListener);
	  Button bruch = new Button("Bruch");
	  eingabefeld.add(bruch);
	  bruch.addActionListener(actionListener);
	  Button frei = new Button(" ");
	  eingabefeld.add(frei);
	  frei.addActionListener(actionListener);
	  Button sieben = new Button("7");
	  eingabefeld.add(sieben);
	  sieben.addActionListener(actionListener);
	  Button acht = new Button("8");
	  eingabefeld.add(acht);
	  acht.addActionListener(actionListener);
	  Button neun = new Button("9");
	  eingabefeld.add(neun);
	  neun.addActionListener(actionListener);
	  Button plus = new Button("+");
	  eingabefeld.add(plus);
	  plus.addActionListener(actionListener);
	  Button vier = new Button("4");
	  eingabefeld.add(vier);
	  vier.addActionListener(actionListener);
	  Button fünf = new Button("5");
	  eingabefeld.add(fünf);
	  fünf.addActionListener(actionListener);
	  Button sechs = new Button("6");
	  eingabefeld.add(sechs);
	  sechs.addActionListener(actionListener);
	  Button minus = new Button("-");
	  eingabefeld.add(minus);
	  minus.addActionListener(actionListener);
	  Button eins = new Button("1");
	  eingabefeld.add(eins);
	  eins.addActionListener(actionListener);
	  Button zwei = new Button("2");
	  eingabefeld.add(zwei);
	  zwei.addActionListener(actionListener);
	  Button drei = new Button("3");
	  eingabefeld.add(drei);
	  drei.addActionListener(actionListener);
	  Button mal = new Button("*");
	  eingabefeld.add(mal);
	  mal.addActionListener(actionListener);
	  Button komma = new Button(",");
	  eingabefeld.add(komma);
	  komma.addActionListener(actionListener);
	  Button nuul = new Button("0");
	  eingabefeld.add(nuul);
	  nuul.addActionListener(actionListener);
	  Button gleich = new Button("=");
	  eingabefeld.add(gleich);
	  gleich.addActionListener(actionListener);
	  Button geteilt = new Button("/");
	  eingabefeld.add(geteilt);
	  geteilt.addActionListener(actionListener);
	  add( eingabefeld, BorderLayout.CENTER );
 
Zuletzt bearbeitet von einem Moderator:
Moin,

hier mal schnelle ein paar nette Links zum Thema "Layoutmanager", die Dir vlt. weiterhelfen:
http://de.wikibooks.org/wiki/Java_S...java_awt_LayoutManager:_java_awt_BorderLayout
http://dpunkt.de/java/Programmieren_mit_Java/Oberflaechenprogrammierung/71.html
http://www.addison-wesley.de/Service/Krueger/kap21002.htm
http://www.sws.bfh.ch/~amrhein/Swing/javainsel7/javainsel_15_010.htm

Bitte die Manager nicht so wild mischen, wie Du es versuchst, das schaffst meist nur bitter Probleme!

Gruß
Klaus
 
Richtig. Für einen LayoutManager entscheiden und den durchziehen, BorderLayout-Informationen helfen in einem GridLayout nur wenig.

Ich habe mit Hilfe von GridBagLayout und GridLayout folgendes geschrieben:

Java:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Calculator extends JFrame {
    
    public static void main(String[] args) {
        new Calculator().setVisible(true);
    }

    public Calculator() {
        super("Taschenrechner");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(210, 300);
        final JPanel contentPane = new JPanel(new GridBagLayout());
        setContentPane(contentPane);

        final TextField textfield = new TextField("");
        textfield.setEditable(false);
        final GridBagConstraints textFieldConstraints = new GridBagConstraints();
        textFieldConstraints.fill = GridBagConstraints.HORIZONTAL;
        textFieldConstraints.weightx = 1;
        contentPane.add(textfield, textFieldConstraints);

        final ActionListener testListener = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() instanceof JButton) {
                    textfield.setText(textfield.getText()
                            + ((JButton) e.getSource()).getText());
                }
            }
        };

        final JPanel inputArea = new JPanel(new GridLayout(6, 4));
        final GridBagConstraints inputConstraints = new GridBagConstraints();
        inputConstraints.gridy = 1;
        inputConstraints.fill = GridBagConstraints.BOTH;
        inputConstraints.weightx = 1;
        inputConstraints.weighty = 1;
        contentPane.add(inputArea, inputConstraints);

        final JButton paranthesisOpenButton = new JButton("(");
        paranthesisOpenButton.addActionListener(testListener);
        inputArea.add(paranthesisOpenButton);

        final JButton paranthesisCloseButton = new JButton(")");
        paranthesisCloseButton.addActionListener(testListener);
        inputArea.add(paranthesisCloseButton);

        final JButton stepBackButton = new JButton("C");
        stepBackButton.addActionListener(testListener);
        inputArea.add(stepBackButton);

        final JButton clearButton = new JButton("AC");
        clearButton.addActionListener(testListener);
        inputArea.add(clearButton);

        final JButton powerButton = new JButton("^");
        powerButton.addActionListener(testListener);
        inputArea.add(powerButton);

        final JButton rootButton = new JButton("Wurzel");
        rootButton.addActionListener(testListener);
        inputArea.add(rootButton);

        final JButton fractionButton = new JButton("Bruch");
        fractionButton.addActionListener(testListener);
        inputArea.add(fractionButton);

        final JButton spaceButton = new JButton(" ");
        spaceButton.addActionListener(testListener);
        inputArea.add(spaceButton);

        final JButton sevenButton = new JButton("7");
        sevenButton.addActionListener(testListener);
        inputArea.add(sevenButton);

        final JButton eightButton = new JButton("8");
        eightButton.addActionListener(testListener);
        inputArea.add(eightButton);

        final JButton nineButton = new JButton("9");
        nineButton.addActionListener(testListener);
        inputArea.add(nineButton);

        final JButton additionButton = new JButton("+");
        additionButton.addActionListener(testListener);
        inputArea.add(additionButton);

        final JButton fourButton = new JButton("4");
        fourButton.addActionListener(testListener);
        inputArea.add(fourButton);

        final JButton fiveButton = new JButton("5");
        fiveButton.addActionListener(testListener);
        inputArea.add(fiveButton);

        final JButton sixButton = new JButton("6");
        sixButton.addActionListener(testListener);
        inputArea.add(sixButton);

        final JButton subtractButton = new JButton("-");
        subtractButton.addActionListener(testListener);
        inputArea.add(subtractButton);

        final JButton oneButton = new JButton("1");
        oneButton.addActionListener(testListener);
        inputArea.add(oneButton);

        final JButton twoButton = new JButton("2");
        twoButton.addActionListener(testListener);
        inputArea.add(twoButton);

        final JButton threeButton = new JButton("3");
        threeButton.addActionListener(testListener);
        inputArea.add(threeButton);

        final JButton multiplyButton = new JButton("*");
        multiplyButton.addActionListener(testListener);
        inputArea.add(multiplyButton);

        final JButton commaButton = new JButton(",");
        commaButton.addActionListener(testListener);
        inputArea.add(commaButton);

        final JButton zeroButton = new JButton("0");
        zeroButton.addActionListener(testListener);
        inputArea.add(zeroButton);

        final JButton resultButton = new JButton("=");
        resultButton.addActionListener(testListener);
        inputArea.add(resultButton);

        final JButton divideButton = new JButton("/");
        divideButton.addActionListener(testListener);
        inputArea.add(divideButton);
    }
}

zwar kein schöner Code, aber es entspricht dem von dir geposteten und erzeugt das angehängte Fenster.


Gute Nacht & Grüße
Carron

PS: das nächste Mal bitte ins richtige Unterforum ;)
 

Anhänge

  • taschenrechner.jpg
    taschenrechner.jpg
    43,1 KB · Aufrufe: 14
Zurück