как установить текст в JTextField, который содержит значение Java-компонента после нажатия кнопки «Отправить» - PullRequest
0 голосов
/ 04 марта 2011

При нажатии кнопки JButton (отправить) из одного класса другой класс должен заменить текст JTextField.Новое текстовое значение получено из бина.Новое значение появляется на консоли, выполняющей system.out.println, но почему оно не заменяет значение в JTextField.Когда программа изначально скомпилирована, JTextField инициализируется тем, что прочитал текущий инвентарь, но как только пользователь отправляет новый заказ, инвентарь JTextField должен показывать новое значение инвентаря.(вычитая количество заказанных книг и текущий инвентарь)

inventoryTextField.setText(String.valueOf(currentInventory));

1 Ответ

0 голосов
/ 05 марта 2011

Это код, с которым я работал:

submit.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            info.setBillingStreet(billingStreetAddressTextField.getText()); //This is to test the Edit menu item from the BookOrder class
            System.out.print(billingStreetAddressTextField.getText());
            info.setQuantityPurchase(quantityPurchaseTextField.getText());
            info.setCurrentInventory(Integer.parseInt(quantityPurchaseTextField.getText()));
            int n = info.getCurrentInventory();  //UPDATED VALUE
            inventory.createInventoryDetailsPanel(n);//PASSING THE UPDATED VALUE TO THE INVENTORY CLASS
        }
    });


 import java.awt.FlowLayout;  
 import javax.swing.BoxLayout;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
 import javax.swing.JTextField;

 public class Inventory extends JPanel {

private JTabbedPane pane = null;
final JTextField inventoryTextField = new JTextField();

OrderInfo info2 = new OrderInfo();
JPanel mainPanel = new JPanel();
JPanel panel2;
JPanel panel22;
int currentInventory = 5000;
int n;

public Inventory() {
    JPanel componentsPanel = new JPanel();
    componentsPanel.setLayout(new BoxLayout(componentsPanel,
            BoxLayout.PAGE_AXIS));
    componentsPanel.add(createInventoryPanel());
    add(mainPanel);
    mainPanel.setVisible(true);
    mainPanel.add(componentsPanel);
    add(mainPanel);
}

public JTabbedPane createInventoryPanel() {
    pane = new JTabbedPane();
    pane.addTab("Inventory Details", createInventoryDetailsPanel(n));
    pane.addTab("Inventory Reordering", createInventoryOrderingPanel());
    return pane;
}

JPanel createInventoryDetailsPanel(int n) {
    panel22 = new JPanel();
    mainPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    JPanel panel1 = new JPanel();
    panel2 = new JPanel();
    panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
    panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));
    panel1.add(new JLabel("Item", JLabel.CENTER));
    panel1.add(new JLabel(" Java How To Program : Deitel and Deitel "));
    panel2.add(new JLabel("Quantity", JLabel.CENTER));
    panel2.add(inventoryTextField);
    System.out.print("Current Inventory is " + n);
    if (n != 0) {//THIS IS WHERE I'M HAVING PROBLEMS TRYING TO PASS THE BEAN from the New Order class
                //SO THE NEW VALUE WILL SHOW IN THE TEXT FIELD FOR INVENTORY DETAILS. 
                //IT ALWAYS SHOWS 5000 NO MATTER WHAT (INITIALIZED ABOVE)
        inventoryTextField.setText(String.valueOf(n));
    } else {
        inventoryTextField.setText(String.valueOf(currentInventory));
    }
    panel22.add(panel1);
    panel22.add(panel2);
    return panel22;
}

private JPanel createInventoryOrderingPanel() {
    JPanel panel = new JPanel();
    JTextField txt1 = new JTextField(10);
    panel.setLayout(new FlowLayout(FlowLayout.LEFT));
    JPanel panel1 = new JPanel();
    panel2 = new JPanel();
    panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
    panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));
    panel1.add(new JLabel("Item", JLabel.CENTER));
    panel1.add(new JLabel(" Java How To Program : Deitel and Deitel "));
    panel2.add(new JLabel("Quantity", JLabel.CENTER));
    panel2.add(txt1);
    panel.add(panel1);
    panel.add(panel2);
    return panel;
}
}
...