Я новичок в 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' на самом деле выполняется, поскольку в моем проекте он также выводится в терминал (который действительно работает)