• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - Swing - JTextField niemoc

Object Storage Arubacloud
0 głosów
452 wizyt
pytanie zadane 5 kwietnia 2017 w Java przez runib Nowicjusz (210 p.)

Cześć wszystkim,

Jeśli podobny temat już istnieje, to bardzo przepraszam, musiałem przeoczyć ;/

Tworzę aktualnie w Java Swing. Chcę stworzyć kalkulator. Moją zagwozdką, problemem na ten moment jest pomysł na dokonywanie operacji obliczeń oraz wyświetlanie działań.

Przyciski 0-9 działają poprawnie. Więc przeszedłem do przycisku + oraz =. Chciałbym aby po wciśnięciu przycisku "+" dana liczba która jest wpisana w JTextField pozostała na miejscu razem ze znakiem plusa, a nastepna liczba zaczynała się w nowej linii. Jednak chyba TextField nie obsługuje \n lub ogólnie znaku nowej linii, więc nie mogę wyświetlić tego tak jakbym chciał. 

Jeśli niezbyt zrozumiale się wyraziłem to przepraszam.

Mój kod:

package com.company;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.util.Date;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;



public class Main extends JFrame implements ActionListener {

    //deklaracja wszystkich buttonow i pol
    private JButton button_0;
    private JButton button_1;
    private JButton button_2;
    private JButton button_3;
    private JButton button_4;
    private JButton button_5;
    private JButton button_6;
    private JButton button_7;
    private JButton button_8;
    private JButton button_9;
    private JButton button_add;
    private JButton button_sub;
    private JButton button_dziel;
    private JButton button_mno;
    private JButton button_clear;
    private JButton button_row;
    private JTextField tekst;

    //deklaracja zmiennych
    String wyswietlacz;
    double number1,number2,wynik;
    String action;


    public Main(){
        //tworzenie buttonow i wszystkich pol
        button_0=new JButton("0");
        button_1=new JButton("1");
        button_2=new JButton("2");
        button_3=new JButton("3");
        button_4=new JButton("4");
        button_5=new JButton("5");
        button_6=new JButton("6");
        button_7=new JButton("7");
        button_8=new JButton("8");
        button_9=new JButton("9");
        button_add=new JButton("+");
        button_sub=new JButton("-");
        button_dziel=new JButton("/");
        button_mno=new JButton("*");
        button_clear=new JButton("C");
        button_row=new JButton("=");
        tekst=new JTextField("");


        //button1
        button_1.setBounds(20,110,80,40);
        button_1.addActionListener(this);
        add(button_1);

        //button2
        button_2.setBounds(120,110,80,40);
        button_2.addActionListener(this);
        add(button_2);

        //button3
        button_3.setBounds(220,110,80,40);
        button_3.addActionListener(this);
        add(button_3);

        //button4
        button_4.setBounds(20,180,80,40);
        button_4.addActionListener(this);
        add(button_4);

        //button5
        button_5.setBounds(120,180,80,40);
        button_5.addActionListener(this);
        add(button_5);

        //button6
        button_6.setBounds(220,180,80,40);
        button_6.addActionListener(this);
        add(button_6);

        //button7
        button_7.setBounds(20,250,80,40);
        button_7.addActionListener(this);
        add(button_7);

        //button8
        button_8.setBounds(120,250,80,40);
        button_8.addActionListener(this);
        add(button_8);

        //button9
        button_9.setBounds(220,250,80,40);
        button_9.addActionListener(this);
        add(button_9);
        //button0
        button_0.setBounds(120,320,80,40);
        button_0.addActionListener(this);
        add(button_0);

        //button +
        button_add.setBounds(330,10,50,50);
        button_add.addActionListener(this);
        add(button_add);

        //button -
        button_sub.setBounds(400,10,50,50);
        add(button_sub);

        //button *
        button_mno.setBounds(330,70,50,50);
        add(button_mno);

        //button /
        button_dziel.setBounds(400,70,50,50);
        add(button_dziel);

        //button clear
        button_clear.setBounds(330,130,50,50);
        add(button_clear);

        //button =
        button_row.setBounds(400,130,50,50);
        button_row.addActionListener(this);
        add(button_row);

        //pole tekstu
        tekst.setLocation(20,10);
        tekst.setSize(280,100);
        tekst.setHorizontalAlignment(JTextField.RIGHT);
        tekst.setFont(new Font("Courier New",Font.ITALIC,20));
        add(tekst);

    }


    public static void main(String[] args) {
        Main okno = new Main();
        okno.setSize(500,410);
        okno.setLayout(null);
        okno.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        okno.setTitle("Calculate");
        okno.setVisible(true);
    }

    //co sie dzieje po wcisnieciu buttona
    public void actionPerformed(ActionEvent e)
    {
        Object source = e.getSource();
        if (source==button_0)
        {
            wyswietlacz=tekst.getText()+"0";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_1)
        {
            wyswietlacz=tekst.getText()+"1";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_2)
        {
            wyswietlacz=tekst.getText()+"2";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_3)
        {
            wyswietlacz=tekst.getText()+"3";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_4)
        {
            wyswietlacz=tekst.getText()+"4";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_5)
        {
            wyswietlacz=tekst.getText()+"5";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_6)
        {
            wyswietlacz=tekst.getText()+"6";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_7)
        {
            wyswietlacz=tekst.getText()+"7";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_8)
        {
            wyswietlacz=tekst.getText()+"8";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_9)
        {
            wyswietlacz=tekst.getText()+"9";
            tekst.setText(wyswietlacz);
        }
        else if (source==button_add)
        {
            wyswietlacz=tekst.getText();
            number1=Double.parseDouble(wyswietlacz);
            tekst.setText("");
            action="add";

        }
        if (source==button_row)
        {
            wyswietlacz=tekst.getText();
            number2=Double.parseDouble(wyswietlacz);

            switch(action)
            {
                case "add":
                    wynik=number1+number2;
                    tekst.setText(String.valueOf(number1)+ " + " + String.valueOf(number2)+ " = " + String.valueOf(wynik));
                    break;
                default:
                    break;
            }
        }
    }
}

 

komentarz 5 kwietnia 2017 przez manjaro Nałogowiec (37,390 p.)
Netbeans to IDE w którym zrobisz całe gui w 3 minuty. I nie tylko gui.
komentarz 5 kwietnia 2017 przez runib Nowicjusz (210 p.)
Ok, wytłumaczyłbyś dlaczego tak szybko?
komentarz 5 kwietnia 2017 przez Aisekai Nałogowiec (42,190 p.)
Jeżeli to działa tak jak w javafx w scenebuilderze to masz pewnie możliwość Drag-and-dropowania komponentów.
komentarz 5 kwietnia 2017 przez manjaro Nałogowiec (37,390 p.)

Obczaj sobie w sieci jest cała masa tego np tutaj

komentarz 5 kwietnia 2017 przez runib Nowicjusz (210 p.)
Rozumiem, dzięki :)

1 odpowiedź

0 głosów
odpowiedź 5 kwietnia 2017 przez rednet Użytkownik (660 p.)
Z tego co pamiętam  JTextField nie obsługuje multilinii, spróbuj zastosować JTextArea.

Podobne pytania

0 głosów
1 odpowiedź 340 wizyt
pytanie zadane 13 września 2017 w Java przez ebo96rok Bywalec (2,980 p.)
0 głosów
2 odpowiedzi 149 wizyt
pytanie zadane 8 września 2017 w Java przez niezalogowany
+1 głos
1 odpowiedź 182 wizyt

92,676 zapytań

141,580 odpowiedzi

320,058 komentarzy

62,039 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...