MariusCDPPI Posted May 18, 2017 Share Posted May 18, 2017 (edited) Salut! Sunt clasa a 10-a, iar informatica de la scoala mi se pare incredibil de plictisitoare.Am facut un calculator in C++, insa acesta ruleaza in consola.Am cautat pe Google dar nu am gasit nimic; vreau sa stiu doar cum pot face o interfata.Un nume de program, ceva... Edited May 31, 2017 by FnZ Link to comment Share on other sites More sharing options...
Cdorsu Posted May 18, 2017 Share Posted May 18, 2017 (edited) Eu cred ca C++ e un limbaj MINUNAT, dar problema lui e ca nu e prea prietenos cu incepatorii. Daca vrei sa faci o aplicatie care sa foloseasca o interfata DOAR in C++ nu e chiar atat de usor. Insa, daca insisti neaparat pe C++, exista cateva librarii care fac partea de interfata grafica mult mai usoara (daca esti curios, cauta pe internet lucruri precum Qt (asta mi pare interesant), wxWidgets, Adam & Eve (Adobe Source Library), Microsoft Foundation Class). In liceu, majoritatea elevilor car vor sa faca chestii legate de interfata se axeaza pe limbaje gen C# sau Java. Eu, dintre cele doua, prefer Java. (Nimic nu bate C++-ul ) Uite aici ceva cod in Java. Programul de mai jos doar afiseaza o interfata grafica in care utilizatorul poate introduce doua numere si apasa pe un butonc care va face sa apara un text care reprezinta suma a doua numere. package swing; // Suntem in pachetul swing import java.awt.event.*; // avem nevoie de asta pentru a implementa un ActionListener import javax.swing.*; // si avem nevoie de asta pentru interfata public class Swing extends JFrame { // clasa noastra principala (Swing) extinde JFrame (o fereastra de baza) // Gandeste-te la variabilele de aici ca la variabilele globale din C/C++ ( le poti folosi in orice functie din clasa Swing ) public JPanel thePanel; // Tot ce apare intr-o fereastra este pozitionat in unul sau mai multe panouri (JPanel) public JLabel text1; // O sa avem o eticheta (text) public JLabel text2; // Ca utilizatorul sa stie care ce sa scrie public JTextField number1; // Vom folosi asta pe post de INPUT public JTextField number2; // La fel public JButton Suma; // Acesta va fi un buton pe care sa-l apese utilizatorul public JLabel Result; // si acesta va fi alt text in care vom scrie rezultatul public static void main(String[] args) { // aici incepe programul (echivalent C/C++ - int main()) new Swing(); // Mergem pe functia Swing(); Am folosit new ca sa marchez faptul ca este, de fapt, constructorul clasei } public Swing() { // aici este constructorul // avand in vedere ca clasa Swing extinde clasa JFrame, this va deveni un JFrame // deci, this este o fereastra this.setSize(290, 300); // vom avea o fereastra de dimensiuni 290 x 300 (fara un motiv anume, asa mi-a venit) this.setTitle("Ceva"); // cu titlul "Ceva" this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // si atunci cand un utilizator apasa pe X, vom inchide aplicatia // Exista perioade cand nu vrei asta this.setResizable(false); // nu va fi o fereastra redimensionabila this.setLocationRelativeTo(null); // Cea mai simpla explicatie la asta e "Pune totul la mijloc" thePanel = new JPanel(); // Cream panoul text1 = new JLabel("Primul numar"); // Cream un textul "Primul numar" thePanel.add(text1); // si il adaugam in panou number1 = new JTextField(10); // Cream un textbox care va avea 10 coloane // ( gandeste-te la coloane ca la caractere pe care le poti scrie acolo ) thePanel.add(number1); // si il adaugam in panou text2 = new JLabel("Al doilea numar"); // Cream un al doilea text "Al doilea numar" thePanel.add(text2); // si il adaugam in panou number2 = new JTextField(10); // Cream un textbox care va avea 10 coloane thePanel.add(number2); // si il adaugam in panou Suma = new JButton("Suma celor doua numere"); // cream un buton pe care sa scrie "Suma celor doua numere" myActionListener al = new myActionListener(); // acesta e un ActionListener care va putea fi apelat de cate ori va fi nevoie Suma.addActionListener(al); // aici facem legatura intre ActionListener si buton thePanel.add(Suma); // si il adaugam in panou Result = new JLabel(); // acesta va fi textul final (in care vom scrie rezultatul) thePanel.add(Result); // si il adaugam in panou this.add(thePanel); // la final adaugam panoul ferestrei (this) this.setVisible(true); // facem vizibila fereastra } private class myActionListener implements ActionListener { // acesta este ActionListenerul //El implementeaza clasa ActionListener // va fi apelat de fiecare data cand este facuta o actiune dintr-un obiect care foloseste acest ActionListener @Override public void actionPerformed(ActionEvent e) { // atunci cand este facut o actiune, aceasta functie este apelata if (e.getSource() == Suma) { // verificam daca actiunea provine de la butonul nostru (Suma) try { // Incercam sa facem suma celor doua numere int firstNumber, secondNumber, total; firstNumber = Integer.parseInt(number1.getText()); // Incercam sa luam prima valoare secondNumber = Integer.parseInt(number2.getText()); // Incercam sa luam a doua valoare // !Nota: Integer.parseInt() poate "arunca" erori pe care noi trebuie sa le prindem in catch total = firstNumber + secondNumber; // Facem operatia Result.setText("Suma celor doua numere este " + total); // Acum scriem in interfata } catch(NumberFormatException ex) { // Daca nu am putut converti numerele // inseamna ca nu au fost numere acolo, deci stergem textul Result.setText(""); } } } } } Daca vrei sa rulezi codul / sa inveti Java, trebuie sa ai instalat JDK (Java Development Kit). Ca sa te poti apuca direct de codat in ceva asemanator Code::Blocks, descarca de aici NetBeans si JDK 8, iar aici ai tutoriale. Sper ca ti-am fost de ajutor. Edited May 18, 2017 by Cdorsu 2 Link to comment Share on other sites More sharing options...
MariusCDPPI Posted May 19, 2017 Author Share Posted May 19, 2017 18 hours ago, Cdorsu said: Eu cred ca C++ e un limbaj MINUNAT, dar problema lui e ca nu e prea prietenos cu incepatorii. Daca vrei sa faci o aplicatie care sa foloseasca o interfata DOAR in C++ nu e chiar atat de usor. Insa, daca insisti neaparat pe C++, exista cateva librarii care fac partea de interfata grafica mult mai usoara (daca esti curios, cauta pe internet lucruri precum Qt (asta mi pare interesant), wxWidgets, Adam & Eve (Adobe Source Library), Microsoft Foundation Class). In liceu, majoritatea elevilor car vor sa faca chestii legate de interfata se axeaza pe limbaje gen C# sau Java. Eu, dintre cele doua, prefer Java. (Nimic nu bate C++-ul ) Reveal hidden contents Uite aici ceva cod in Java. Programul de mai jos doar afiseaza o interfata grafica in care utilizatorul poate introduce doua numere si apasa pe un butonc care va face sa apara un text care reprezinta suma a doua numere. package swing; // Suntem in pachetul swing import java.awt.event.*; // avem nevoie de asta pentru a implementa un ActionListener import javax.swing.*; // si avem nevoie de asta pentru interfata public class Swing extends JFrame { // clasa noastra principala (Swing) extinde JFrame (o fereastra de baza) // Gandeste-te la variabilele de aici ca la variabilele globale din C/C++ ( le poti folosi in orice functie din clasa Swing ) public JPanel thePanel; // Tot ce apare intr-o fereastra este pozitionat in unul sau mai multe panouri (JPanel) public JLabel text1; // O sa avem o eticheta (text) public JLabel text2; // Ca utilizatorul sa stie care ce sa scrie public JTextField number1; // Vom folosi asta pe post de INPUT public JTextField number2; // La fel public JButton Suma; // Acesta va fi un buton pe care sa-l apese utilizatorul public JLabel Result; // si acesta va fi alt text in care vom scrie rezultatul public static void main(String[] args) { // aici incepe programul (echivalent C/C++ - int main()) new Swing(); // Mergem pe functia Swing(); Am folosit new ca sa marchez faptul ca este, de fapt, constructorul clasei } public Swing() { // aici este constructorul // avand in vedere ca clasa Swing extinde clasa JFrame, this va deveni un JFrame // deci, this este o fereastra this.setSize(290, 300); // vom avea o fereastra de dimensiuni 290 x 300 (fara un motiv anume, asa mi-a venit) this.setTitle("Ceva"); // cu titlul "Ceva" this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // si atunci cand un utilizator apasa pe X, vom inchide aplicatia // Exista perioade cand nu vrei asta this.setResizable(false); // nu va fi o fereastra redimensionabila this.setLocationRelativeTo(null); // Cea mai simpla explicatie la asta e "Pune totul la mijloc" thePanel = new JPanel(); // Cream panoul text1 = new JLabel("Primul numar"); // Cream un textul "Primul numar" thePanel.add(text1); // si il adaugam in panou number1 = new JTextField(10); // Cream un textbox care va avea 10 coloane // ( gandeste-te la coloane ca la caractere pe care le poti scrie acolo ) thePanel.add(number1); // si il adaugam in panou text2 = new JLabel("Al doilea numar"); // Cream un al doilea text "Al doilea numar" thePanel.add(text2); // si il adaugam in panou number2 = new JTextField(10); // Cream un textbox care va avea 10 coloane thePanel.add(number2); // si il adaugam in panou Suma = new JButton("Suma celor doua numere"); // cream un buton pe care sa scrie "Suma celor doua numere" myActionListener al = new myActionListener(); // acesta e un ActionListener care va putea fi apelat de cate ori va fi nevoie Suma.addActionListener(al); // aici facem legatura intre ActionListener si buton thePanel.add(Suma); // si il adaugam in panou Result = new JLabel(); // acesta va fi textul final (in care vom scrie rezultatul) thePanel.add(Result); // si il adaugam in panou this.add(thePanel); // la final adaugam panoul ferestrei (this) this.setVisible(true); // facem vizibila fereastra } private class myActionListener implements ActionListener { // acesta este ActionListenerul //El implementeaza clasa ActionListener // va fi apelat de fiecare data cand este facuta o actiune dintr-un obiect care foloseste acest ActionListener @Override public void actionPerformed(ActionEvent e) { // atunci cand este facut o actiune, aceasta functie este apelata if (e.getSource() == Suma) { // verificam daca actiunea provine de la butonul nostru (Suma) try { // Incercam sa facem suma celor doua numere int firstNumber, secondNumber, total; firstNumber = Integer.parseInt(number1.getText()); // Incercam sa luam prima valoare secondNumber = Integer.parseInt(number2.getText()); // Incercam sa luam a doua valoare // !Nota: Integer.parseInt() poate "arunca" erori pe care noi trebuie sa le prindem in catch total = firstNumber + secondNumber; // Facem operatia Result.setText("Suma celor doua numere este " + total); // Acum scriem in interfata } catch(NumberFormatException ex) { // Daca nu am putut converti numerele // inseamna ca nu au fost numere acolo, deci stergem textul Result.setText(""); } } } } } Reveal hidden contents Daca vrei sa rulezi codul / sa inveti Java, trebuie sa ai instalat JDK (Java Development Kit). Ca sa te poti apuca direct de codat in ceva asemanator Code::Blocks, descarca de aici NetBeans si JDK 8, iar aici ai tutoriale. Sper ca ti-am fost de ajutor. Mersi mult Si greu nu e deloc.Nu vad ce e asa greu in a scrie niste chestii.Mai dificil e sa-ti dai seama cum sa le scrii, dar daca te duce capu' o faci si pe asta. Se poate da T/C. Link to comment Share on other sites More sharing options...
Cdorsu Posted May 20, 2017 Share Posted May 20, 2017 (edited) On 5/19/2017 at 0:02 PM, se7en said: Se poate da T/C. O sa mai las topicul deschis, poate mai adauga cineva ceva. Edited May 21, 2017 by Cdorsu Link to comment Share on other sites More sharing options...
SwiftBrotherHD Posted May 20, 2017 Share Posted May 20, 2017 Poti face interfata, gen un 'cadran' pentru calculator folosind cout<< "----------------------------------------------------", gen liniile sau sa dai cout<< (char)198 , unde 198 este un exemplu de caracter din codul ASCII, acolo ai bara, colt, linie ca sa 'desenezi' in consola. Link to comment Share on other sites More sharing options...
NUSUNTRENKO Posted May 21, 2017 Share Posted May 21, 2017 Poti sa faci interfata in alt limbaj(c# etc.), ca subprocess ce comunica cu programul principal(c++), si asa ai 'best of both worlds'. Pe langa ce ti-a recomandat Cdorsu, daca vrei ceva mai 'fancy', libRocket/Awesomium sunt HTML/CSS UI engines. 1 Link to comment Share on other sites More sharing options...
FnZ Posted May 21, 2017 Share Posted May 21, 2017 Consider ca se poate da topic closed. Link to comment Share on other sites More sharing options...
Recommended Posts