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

Java - Swing - JTextField niemoc

VPS Starter Arubacloud
0 głosów
442 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ź 322 wizyt
pytanie zadane 13 września 2017 w Java przez ebo96rok Bywalec (2,980 p.)
0 głosów
2 odpowiedzi 143 wizyt
pytanie zadane 8 września 2017 w Java przez niezalogowany
+1 głos
1 odpowiedź 178 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...