#java #user-interface #netbeans #io #jframe
#java #пользовательский интерфейс #netbeans #io #jframe
Вопрос:
Когда я нажимаю кнопку загрузки, отображаются значения из reload.txt
public class VotingSystem extends javax.swing.JFrame {
private final JTextField[] textFields;
/**
* Creates new form VotingSystem
*/
public VotingSystem() {
initComponents();
textFields = new JTextField[12];
textFields[0] = koontf;
textFields[1] = baamtf;
textFields[2] = sachitf;
textFields[3] = fakertf;
textFields[4] = phonsekaltf;
textFields[5] = lauretf;
textFields[6] = yeontf;
textFields[7] = aguerotf;
textFields[8] = agnistf;
textFields[9] = lokitf;
textFields[10] = lawliettf;
textFields[11] = ryuzakitf;
} private void loadActionPerformed(java.awt.event.ActionEvent evt) {
int line = 0;
try(Scanner scanner = new Scanner(new File("reload.txt"))){
while(scanner.hasNextLine()){
textFields[line ].setText(scanner.nextLine());
if(line == textFields.length){
break;
}
}
}catch(FileNotFoundException ex){
Logger.getLogger(VotingSystem.class.getName()).log(Level.SEVERE, null, ex);
}
koontf.requestFocus(); // you can only call request focus on one element at a time (it does not make sense to call it on all textfields
}
private void baamtfActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
Когда я нажимаю голосовать, оно должно суммироваться, но вместо этого возвращается к 1. Я могу каким-либо образом добавить его к импортированному значению???Ниже приведен код для кнопки голосования Jbutton.
int pick1 = 0, pick2 = 0,pick3 = 0, pick4 = 0,pick5 = 0, pick6 = 0, pick7 = 0, pick8 = 0, pick9 = 0, pick10 = 0, pick11 = 0, pick12 = 0;
private void voteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (koonchk.isSelected()){
pick1 ;
koontf.setText(Integer.toString(pick1));
}
else if (baamchk.isSelected()){
pick2 ;
baamtf.setText(Integer.toString(pick2));
}
if(sachichk.isSelected()){
pick3 ;
sachitf.setText(Integer.toString(pick3));
}
else if (fakerchk.isSelected()){
pick4 ;
fakertf.setText(Integer.toString(pick4));
}
if (phonsekalchk.isSelected()){
pick5 ;
phonsekaltf.setText(Integer.toString(pick5));
}
else if (laurechk.isSelected()){
pick6 ;
lauretf.setText(Integer.toString(pick6));
}
if (yeonchk.isSelected()){
pick7 ;
yeontf.setText(Integer.toString(pick7));
}
else if (aguerochk.isSelected()){
pick8 ;
aguerotf.setText(Integer.toString(pick8));
}
else if (agnischk.isSelected()){
pick9 ;
agnistf.setText(Integer.toString(pick9));
}
if (lokichk.isSelected()){
pick10 ;
lokitf.setText(Integer.toString(pick10));
}
else if (lawlietchk.isSelected()){
pick11 ;
lawliettf.setText(Integer.toString(pick11));
}
else if (ryuzakichk.isSelected()){
pick12 ;
ryuzakitf.setText(Integer.toString(pick12));
}
}
Ответ №1:
Проблема заключается в том, что вы инициализируете все переменные как
int pick1 = 0, pick2 = 0,pick3 = 0, pick4 = 0,pick5 = 0, pick6 = 0, pick7 = 0, pick8 = 0, pick9 = 0, pick10 = 0, pick11 = 0, pick12 = 0;
Таким образом, предыдущие значения текста, которые вы загрузили, теряются. Я бы посоветовал вам инициализировать переменные как:
int pick1 = Integer.parseInt(textFields[1].getText());
int pick2 = Integer.parseInt(textFields[2].getText());
.
.
.
//And so on.
Это гарантирует, что предыдущее число в текстовом поле останется там, где оно есть.
Еще лучшим решением было бы объявить целочисленный массив переменных как pick
с размером 12. Нравится:
int[] pick = new int[12];
Затем объявите метод, который будет обновлять текстовые поля значением pick
like:
public void updateTextFields(){
for(int i = 0; i < 12; i ){
textFields[i].setText(String.valueOf(pick[i])); //corrected the code
}
}
Теперь в вашем методе чтения файла вместо
textFields[line ].setText(scanner.nextLine());
использовать
pick[i ] = Integer.parseInt(scanner.nextLine());
и в последней строке метода просто вызовите ранее объявленный updateTextFields()
.
Также в методе голосования удалите весь код для textField.setText()
. и в последней строке просто вызовите метод upadateTextFields()
. Что я имею в виду под этим:
private void voteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (koonchk.isSelected()){
pick1 ; //Change to pick[1]
// koontf.setText(Integer.toString(pick1)); remove
}
else if (baamchk.isSelected()){
pick2 ; //change to pick[2]
// baamtf.setText(Integer.toString(pick2)); remove
}
if(sachichk.isSelected()){
pick3 ; //change to pick[3]
// sachitf.setText(Integer.toString(pick3)); remove
}
else if (fakerchk.isSelected()){
pick4 ; //Change to pick[4]
// fakertf.setText(Integer.toString(pick4)); remove
}
if (phonsekalchk.isSelected()){
pick5 ; //Change to pick[5]
// phonsekaltf.setText(Integer.toString(pick5)); remove
}
else if (laurechk.isSelected()){
pick6 ; //Change to pick[6]
// lauretf.setText(Integer.toString(pick6)); remove
}
if (yeonchk.isSelected()){
pick7 ; //Change to pick[7]
// yeontf.setText(Integer.toString(pick7)); remove
}
else if (aguerochk.isSelected()){
pick8 ; //Change to pick[8]
// aguerotf.setText(Integer.toString(pick8)); remove
}
else if (agnischk.isSelected()){
pick9 ; //Change to pick[9]
//agnistf.setText(Integer.toString(pick9)); remove
}
if (lokichk.isSelected()){
pick10 ; //Change to pick[10]
//lokitf.setText(Integer.toString(pick10)); remove
}
else if (lawlietchk.isSelected()){
pick11 ; //Change to pick[11]
//lawliettf.setText(Integer.toString(pick11)); remove
}
else if (ryuzakichk.isSelected()){
pick12 ; //Change to pick[12]
//ryuzakitf.setText(Integer.toString(pick12)); remove
}
updateTextFields(); //Add this new line.
}
Комментарии:
1. Отображается ошибка «переменные текстовые поля, возможно, не были инициализированы.
2. должно ли это быть int pic1 = Integer.parseInt(TextFields[0].getText()); ?
3. @JericMarquez извините, это опечатка, я ее исправил.
4. Кажется, что у меня проблема с изменением имен объявленных переменных из-за результатов. ` выполнен приватный недействительный результат (java.awt.event. ActionEvent evt) { StringBuilder message = new StringBuilder(); // ЧТОБЫ добавить сюда свой код обработки: if(pick1 > pick2 ){ message.append(«Новый президент — Кун! n»); } else if(pick2 > pick1){ message.append(«Новый президент — Баам! n»); }`
5. @JericMarquez.где бы вы ни
pick1
заменяли наpick[1]
и так далее во всем вашем коде, и это решило бы вашу проблему