当他们在不同的标签中时,请参考单个JTextField

时间:2016-11-20 17:39:31

标签: java swing user-interface awt jtabbedpane

我有三个JTextField,当按下购买按钮时,关联的侦听器应该从文本字段中检索文本并使用它来更新表。

enter image description here

问题在于,当我按下购买按钮时,它会尝试使用David的标签中的JTextFields中的数据,而不是我当前使用的那个。如果我制作另一个名为" Jack"然后它会尝试使用插孔。创建文本框的代码如下:

JLabel label2 = new JLabel("Name Of Share:");                                       
    tabPanel.add(label2);
    textFieldName = new JTextField("", 15); 

    textFieldName.setColumns(10);
    textFieldName.setToolTipText("Enter Number of shares here");
    tabPanel.add(textFieldName);

购买按钮的听众:

int quantity = 0;
    if (e.getActionCommand().equals("Buy")) {
        String name = view.getTextFieldName().getText();
        String ticker = view.getTextFieldTicker().getText().toUpperCase();
        try{
         quantity = Integer.parseInt(view.getTextFieldNumber().getText());
        }catch(NumberFormatException er){

        }

        view.buy(ticker, name, quantity);
    } 

如果我只有一个标签,那么一切正常,但是当问题开始时,我会介绍更多内容。

有人可以建议一种方法来解决这个问题,这样我就可以从我所在标签的文本框中获取数据吗?

我应该提到的视图是MainGUI类型我创建的类,它用于构建具有以下字段的GUI:

public class MainGUI extends JFrame implements Observer {

private JTabbedPane tabbedPane;
private JTable table;
private JTextField textFieldTicker;
private JTextField textFieldName;
private JTextField textFieldNumber;
private DefaultTableModel model;
private PortfolioManager pm;
private JLabel tValue;

创建一个Tab,使用的代码是:

JPanel topPanel = new JPanel();
    JPanel buttonPanel = new JPanel();
    JPanel labelPanel = new JPanel();

    JSplitPane splitPanelbtm = new JSplitPane(JSplitPane.VERTICAL_SPLIT, labelPanel, buttonPanel);
    JSplitPane splitPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, topPanel, splitPanelbtm){
        private final int location = 500;
        {setDividerLocation(location);}
        @Override
        public int getDividerLocation(){
            return location;
        }
        @Override
        public int getLastDividerLocation(){
            return location;
        }
    };

    splitPanel.setEnabled( false );
    splitPanel.setDividerSize(0);
    splitPanelbtm.setEnabled( false );
    splitPanelbtm.setDividerSize(0);
    splitPanelbtm.setBorder(null);
    splitPanel.setBorder(null);
    tabbedPane.add(tabName, splitPanel);
    tabbedPane.setName(tabName);
    this.add(tabbedPane);
    this.setVisible(true);

    createLabelsButtons(topPanel);
    createTable(topPanel);
    tValue = new JLabel("Total Value for " + tabbedPane.getName() + " is: $ ");
    labelPanel.add(tValue);
    createTabButtons(buttonPanel);

0 个答案:

没有答案