Я пытаюсь узнать это значение для установки значения - возвращающее значение, исходящее из стиля кодирование. Я слышал, что это своего рода «пропуск по значению или ссылочной» проблеме, проводил мое исследование и все еще зависел от проблемы. В любом случае, это мой исходный код:Получение значения из значения класса A из класса A в B и возврат значения из класса B в A
System.out.println(x);
int x = object2.getX(); **//I HAVE A PROBLEM HERE**
int x2 = rand.nextInt(100);
int y = rand.nextInt(100);
int xpost = rand.nextInt(300);
int ypost = rand.nextInt(150);
allField[x] = new JTextField(String.format(" %s + %s", x2 , y));
allField[x].setBounds(xpost, ypost, 100, 30);
allField[x].setEnabled(false);
add(allField[x]);
object2.setX(x++); **//I HAVE A PROBLEM HERE TOO**
Я пытаюсь получить значение из другого класса через object2.getX(); оттуда он установит индексы массива. По завершении установки массива, который все еще равен 0, я хочу увеличить его (x ++), и это значение, равное 1, переходит к другому классу и устанавливает его.
это другой класс:
public class TimerTutorial extends JFrame {
JLabel promptLabel, timerLabel;
int counter, x = 0;
int changeTest;
JTextField tf;
JButton button;
Timer timer;
public int getX(){**//I HAVE A PROBLEM HERE**
return x;
}
public int setX(int y){**//I HAVE A PROBLEM HERE**
x = y;
return this.x;
}
}
Если вы хотите, чтобы весь код, но задача поставлена перед этим:
import java.awt.event.*;
import java.awt.*;
import java.util.Random;
import javax.swing.*;
public class TimerTutorial extends JFrame{
JLabel promptLabel, timerLabel;
int counter, x = 0;
int changeTest;
JTextField tf;
JButton button;
Timer timer;
public int getX(){
return x;
}
public int setX(int y){
x = y;
return this.x;
}
public TimerTutorial(){
setLayout(new GridLayout(2,2,5,5));
tf = new JTextField();
add(tf);
promptLabel = new JLabel("Enter seconds:", SwingConstants.CENTER);
add(promptLabel);
button = new JButton("Start Timing");
add(button);
timerLabel = new JLabel("Waiting...", SwingConstants.CENTER);
add(timerLabel);
event e = new event();
button.addActionListener(e);
}
public class event implements ActionListener{
public void actionPerformed(ActionEvent e){
int count = (int)(Double.parseDouble(tf.getText()));
timerLabel.setText("Time left:" +count);
TimeClass tc = new TimeClass(count);
timer = new Timer(1000, tc);
timer.start();
}
public class TimeClass implements ActionListener{
int counter;
public TimeClass(int counter){
this.counter = counter;
}
public void actionPerformed(ActionEvent tc){//every time timer updates this will spark
counter--;
JTextField[] allField = new JTextField [20];
TimerTutorial object2 = new TimerTutorial();
Random rand = new Random();
System.out.println(x);
int x = object2.getX();
int x2 = rand.nextInt(100);int y = rand.nextInt(100);
int xpost = rand.nextInt(300); int ypost = rand.nextInt(150);
allField[x] = new JTextField(String.format(" %s + %s", x2 , y));
allField[x].setBounds(xpost, ypost, 100, 30);
allField[x].setEnabled(false);
add(allField[x]);
object2.setX(x++);
if(counter>=1) {
timerLabel.setText("Time left: "+counter);
} else {
timer.stop();
timerLabel.setText("Done!");
Toolkit.getDefaultToolkit().beep();
}
}
}
}
public static void main(String args[]){
TimerTutorial gui = new TimerTutorial();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(800,800);
gui.setVisible(true);
}
}
код работает нормально на самом деле. Моя цель - просто случайно разместить JTextFields в секундах с произвольной позицией и значениями в ней. Проблема здесь в том, что x не увеличивается. Который помещает мои JTextFields в индекс [0]. PS: еще новичок в Java, любые советы будут оценены
Длинный код ... Можете ли вы сузить его до проблемы, с которой вы сталкиваетесь? Здесь мы должны сделать это за вас. –
Извините! Подождите. Я сужу его. @Vakh –