Так же, как и в более базовых Java-классах, вы часто используете методы мутатора и метода доступа, также известные как сеттеры и геттеры, для изменения состояния объекта.В вашей ситуации вам нужно предоставить классу NewPanel метод setter , public void setXCoor(int x) {...}
и, возможно, аналогичный метод для yCoord, если необходимо, чтобы внешние классы (графический интерфейс, который содержит объект NewPanel) могли изменятьЦенности NewPanel.После изменения xCoord вы захотите вызвать repaint () для того же объекта NewPanel, чтобы JVM мог вызывать его метод paintComponent для отображения эффектов измененного значения xCoord.
Edit 1
Также вопрос: почему ваш класс Problem3 расширяет JFrame?Здесь это кажется ненужным.
Edit 2
Кроме того, я бы не делал этот код в основном методе:
int xCoord = Integer.parseInt(
JOptionPane.showInputDialog("Enter an X cord."));
JFrame gd = new JFrame();
gd.setLocationRelativeTo(null);
gd.setSize(300, 300);
gd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gd.setVisible(true);
gd.add(new NewPanel());
Но скорее в конструктореполноценный класс.
Кроме того, я бы дал этому классу поле класса NewPanel, и я поместил бы объект, содержащийся в этом поле, в JFrame, что позволило бы мне иметь ссылку на объект NewPanel так,Я могу вызывать его методы в других местах класса.
Редактировать 3
Относительно этого кода:
public void setX() {
xCoord = Integer.parseInt(
JOptionPane.showInputDialog("Enter an X cord."));
}
Я бы не стал вводить пользователя на чертежеучебный класс.Вместо этого я бы использовал метод установки true метод установки, похожий на тот, который, я уверен, вы делали много раз до этого, и в такой форме:
public void setX(int xCoord) {
// set your field in here like you always do
}
Затем сделайте ваш пользовательвзаимодействие, будь то JOptionPane или что-то в основном графическом интерфейсе или в другом месте вашей программы.Как только пользователь введет свои данные, вызовите метод setter выше для вашей переменной NewPanel, передавая пользовательский ввод (как, конечно, int).
Edit 4
Относительно этого кода:
public static void main(String[] args) {
// ....
gd.add(new NewPanel());
NewPanel.setX(50);
}
Вы вызываете метод setX для класса NewPanel, а не для объекта NewPanel, поэтому компилятор соответствующим образом жалуется.Вот почему я предложил в одном из моих редакторов выше создать переменную NewPanel в вашем классе GUI, создать графический интерфейс в конструкторе класса GUI, а не в методе main (который должен в основном вызывать конструктор класса GUI), и использоватьта же самая переменная NewPanel для помещения в JFrame GUI и для вызова метода setX (...).