GUI.javaпроблемы пытаются разделяющей графического интерфейса от логики
package ccc;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GUI implements ActionListener {
JFrame f;
JPanel bg, s, a;
JLabel ca, £, cav, co, cov, co2, pr, error;
JTextField tf;
JButton b1, b2;
public GUI(){
f = new JFrame();
bg = new JPanel();
bg.setSize(650, 500);
bg.setBackground(Color.darkGray);
bg.setLayout(null);
bg.setLocation(0, 0);
s = new JPanel();
s.setSize(180, 445);
s.setBackground(Color.white);
s.setLayout(null);
s.setLocation(10, 10);
a = new JPanel();
a.setSize(430, 445);
a.setBackground(Color.white);
a.setLayout(null);
a.setLocation(202, 10);
ca = new JLabel("CASH:");
ca.setSize(70,25);
ca.setLocation(10, 25);
£ = new JLabel("£");
£.setSize(10, 25);
£.setLocation(80, 25);
cav = new JLabel("128.23");
cav.setSize(80, 25);
cav.setLocation(90, 25);
co = new JLabel("COCAINE:");
co.setSize(70, 25);
co.setLocation(10, 50);
cov = new JLabel("6 units");
cov.setSize(70, 25);
cov.setLocation(80, 50);
co2 = new JLabel("COCAINE");
co2.setSize(70, 25);
co2.setLocation(10, 25);
pr = new JLabel("£39.95");
pr.setSize(60, 25);
pr.setLocation(90, 25);
tf = new JTextField();
tf.setSize(70, 25);
tf.setLocation(160, 25);
b1 = new JButton("BUY");
b1.setSize(70, 25);
b1.setLocation(270, 25);
b1.addActionListener(this);
b2 = new JButton("SELL");
b2.setSize(70, 25);
b2.setLocation(350, 25);
b2.addActionListener(this);
error = new JLabel();
error.setSize(200, 25);
error.setLocation(50, 50);
s.add(ca);
s.add(£);
s.add(cav);
s.add(co);
s.add(cov);
a.add(co2);
a.add(pr);
a.add(tf);
a.add(b1);
a.add(b2);
a.add(error);
bg.add(s);
bg.add(a);
f.add(bg);
f.setSize(650, 500);
f.setLayout(null);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public static void main(String[] args) {
new GUI();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1){
Buy a = new Buy();
a.Buy();
}
if (e.getSource() == b2){
}
}
}
Buy.java
package ccc;
public class Buy extends GUI {
String pri, qua, cas, uni, aaa;
double price, quantity, cash, units, total, deduction;
public Buy(){
pri = pr.getText();
price = Double.parseDouble(pri);
qua = tf.getText();
quantity = Double.parseDouble(qua);
cas = cav.getText();
cash = Double.parseDouble(cas);
uni = cov.getText();
units = Double.parseDouble(uni);
total = price * quantity;
if (cash >= total){
deduction = cash - total;
aaa = String.valueOf(deduction);
cav.setText(aaa);
}
else if (cash < total){
error.setText("Sorry, you don't currently have the funds");
}
}
}
Привет народ,
я в настоящее время обучения Java и хотел дать себе проект, было одновременно сложным и забавным. Я решил создать игру, которую я помню, играя, когда я был ребенком под названием «Доппары».
Это моя вторая попытка в этой игре. Когда я начал свою первую попытку, все прошло хорошо. Через некоторое время мой исходный код начал заполняться дико из-под контроля, пока я не смог продолжить больше, так как я все время терялся в горах кода.
Затем я решил начать снова, только на этот раз я хотел отделить gui от логики (2 разных файла .java). Вот где моя проблема. Раньше это работало бы хорошо. После разделения моих java-файлов функциональность прекратилась.
Когда я нажимаю jbutton b1, моя программа должна принять ценовое значение кокаина и значение единиц, введенное пользователем jtextfield, выполнить расчет, обратившись к методу в Buy.java, а затем обновить соответствующий JLabels внутри jpanel GUI.java.
Например, пользователь x хочет купить кокаин по указанной цене, поэтому он вводит значение, представляющее желаемое количество. Затем он нажимает кнопку покупки, которая в конечном счете вычитает деньги из кармана, которые отображаются в левой части окна программы, используя метод в классе Buy.
Надеюсь, вы сможете понять мои объяснения, и я надеюсь услышать от вас в ближайшее время. Заранее спасибо. Мой исходный код приведен ниже.
Имея реальные проблемы с загрузкой вопроса и кода sourc вместе. Там должно быть два файла .java, но кажется, что некоторые были отключены. По крайней мере, это выглядит так на моем телефоне?!? – dazbrad
См. Также этот [пример] (http://stackoverflow.com/a/3072979/230513). – trashgod