Java 프로그램에 두 개의 탭이 있습니다. 하나는 주식을 추가하고 다른 하나는 내가 만든 주식을 나열하는 것입니다. 두 번째 탭의 새 항목을 만들 때 첫 번째 탭에서 항목 목록을 업데이트하려고합니다. 어떤 아이디어?항목이 JList에 추가 될 때 JTabbedPane 업데이트
을 그리고 데이터를 표시해야합니다 :
나는public class StocksGUI extends javax.swing.JFrame {
private JTextField stock, qty, purchasePrice, currentPrice;
private JButton addStockButton;
private JList<StockClass> stockList;
private DefaultListModel<StockClass> stockModel;
public StocksGUI()
{
super("Portfolio Management");
stock = new JTextField();
qty = new JTextField();
purchasePrice = new JTextField();
currentPrice = new JTextField();
addStockButton = new JButton("Add Stock");
stockList = new JList<>();
stockModel = new DefaultListModel<StockClass>();
JTabbedPane tab =new JTabbedPane();
JPanel p2 = new JPanel();
if(stockModel.size() > 1)
{
stockList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
p2.add(new JScrollPane(stockList));
}
else
{
p2.add(new JLabel("Currently No Stocks"));
tab.addTab("List",null, p2, " Panel #2");
}
JPanel p1 = new JPanel(new GridLayout(5,2));
p1.add(new JLabel("Stock"));
p1.add(stock);
p1.add(new JLabel("Quantity"));
p1.add(qty);
p1.add(new JLabel("Purchase Price"));
p1.add(purchasePrice);
p1.add(new JLabel("Current price"));
p1.add(currentPrice);
p1.add(addStockButton);
tab.addTab("Add Stock",null, p1," Panel #1");
add(tab);
TickerAdd ta = new TickerAdd();
TickerAdd.StockADD stad = ta.new StockADD();
addStockButton.addActionListener(stad);
}
public class TickerAdd
{
public class StockADD implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
StockClass passing = new StockClass();
passing.stock = stock.getText();
passing.qty = Integer.parseInt(qty.getText());
passing.pp = Double.parseDouble(purchasePrice.getText());
passing.cp = Double.parseDouble(currentPrice.getText());
stockModel.addElement(passing);
stockList.setModel(stockModel);
StockBackEnd sh = new StockBackEnd();
sh.ClearInput();
stock.setText(sh.GetStockName());
qty.setText(String.valueOf(sh.GetQTY()));
purchasePrice.setText(String.valueOf(sh.GetPP()));
currentPrice.setText(String.valueOf(sh.GetCP()));
}
}
}
여기에 데이터를 입력합니다 ... 첫 번째 탭은 내가 두 번째 탭에서 만드는 오전 항목의 목록을 표시하려면 여기 :
정확합니다! 고맙습니다! 잘 했어. – DevDavid
@DevDavid : 천만에. 제 생각에 당신의 오류는 모델의 크기가> 0이되면 블록이 마술처럼 다시 호출 될 것이라고 생각하는 것입니다 만, 알아 내면 자바에서 어떤 마법도 없습니다 - 코드는 실행하도록 지시 한 것만 실행합니다 if 블록을 두 번째로 실행하려면 리스너에 넣어야합니다. –