Java не работает в самостоятельно созданной частной пустоте, но при выполнении действия кнопки это происходит - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в java, и при создании своего первого интерфейса GUI он столкнулся с некоторыми трудностями и не знаю, как искать решение.

поэтому в netbeans я создал интерфейс с некоторыми кнопками и текстовым полем. Когда я нажимаю на одну из кнопок, выполняется код и вызывается метод, в этом вызываемом методе я пытался изменить текст текстового поля, но он не работал, когда я пытался изменить текстовое поле в методе (выполнено действие кнопки), который создается netbeans, и это действительно работает.

EDIT: Весь код:

public class NewJFrame extends javax.swing.JFrame {

//Creat new JFrame form.
public NewJFrame() {
    initComponents();
}

//Decalre variables.
List<String> Expressions = new ArrayList<String>();

// Я удалил код, который автоматически генерируется netbeans здесь

//Button number 1.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    //Call function to show expressions on screen.
    showExpressions("1");
}                                        

//Button 2 - 9 exactly the same as 1                    

//Button back.
private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {                                          
   //Get the size of the list
   int size = Expressions.size();

   //Remove the last expression from the list
   Expressions.remove(size-1);

   //Show expressions in terminal.
   printExpressions();
}                                         

//Button plus.
private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    //Add a comma to the string.
    addComma();

    //Call function to show expressions on screen.
    showExpressions("+");

    //Add a comma to the string.
    addComma();
}   

//Button minus the same as button plus.                                       

//button equal.
private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    //Join the list
    String joined = String.join("",Expressions);

    //Split the list on a ','.
    String parts[] = joined.split("[\\,]");

    //Declare the outcome and operator.
    double outcome = 0;
    boolean operator = true;

    //Loop through all the parts.
    for (String part : parts) {

        //Check if part is a number or operator.
        if (part.equals("-") || part.equals("+")) {

            //part is an operator.
            switch (part) {
                case "+":
                    operator = true;
                    break;
                case "-":
                    operator = false;
                    break;
            }//Switch.

        } else {

            //Part is a number.
            if (operator)
                outcome += Double.valueOf(part);
            else
                outcome -= Double.valueOf(part);

        } //Try catch.

    }//Foreach.

    //Show outcome on screen
    System.out.println(outcome);

    //Clear the array.
    Expressions.clear();

}                                         

//showExpressions. (Add them to the list array.)
private void showExpressions(String value) { 

    Expressions.add(value); 
    System.out.println(Expressions);
}

//Add a comma before and after entering an operator, to split afterwards.
private void addComma() {
    Expressions.add(",");
}

//Show the expression in the terminal and on the screen.
private void printExpressions() {
    //Show the expression in the terminal.
    System.out.println(Expressions);
    jLabel1.setText("TESTTT");

    //Declare variables.
    String output = "";

    //Generate the numbers shown in the textfield
    for (String Expression : Expressions) {
        if (!Expression.equals("-") && !Expression.equals("+")) {
            output.concat(Expression);
        }//If.
    }//For.

    //Show in textfield on GUI.
    jTextField1.setText(output);

}

//Main static void.
public static void main(String args[]) {

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new NewJFrame().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton10;
private javax.swing.JButton jButton11;
private javax.swing.JButton jButton12;
private javax.swing.JButton jButton13;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
// End of variables declaration                   

}

Я также знаю, что 'show' на самом деле выполняется, поскольку в моем проекте он также выводится в терминал (который действительно работает)

1 Ответ

0 голосов
/ 14 июня 2020

Поскольку ответа нет, и я видел свой вопрос, проблема решена.

Проблема в том, что метод, показывающий значение в GUI, никогда не был вызван из-за опечатки если я правильно помню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...