내가 뭘 잘못하고 있는지 모르겠다. JTextField 사용자 입력을 저장하여 JList에 표시하려고 시도하고 있지만 사용자 입력을 저장하기 위해 버튼을 누를 때마다 JList는 비어있게됩니다. 어떤 도움이라도 대단히 감사하겠습니다.JList에서 사용자 입력을 저장하고 표시하는 방법은 무엇입니까?
DefaultListModel<String> model = new DefaultListModel<String>();
menuList = new JList<String>(model);
menuList.setBounds(500, 65, 300, 400);
menuList.setSelectionBackground(Color.LIGHT_GRAY);
menuList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
btnCreateMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
childFrame = new JFrame("New Menu");
childFrame.setBounds(340, 300, 400, 200);
childFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
childFrame.getContentPane().setLayout(null);
childFrame.setVisible(true);
lblNewMenu = new JLabel("Menu Name:");
lblNewMenu.setBounds(30, 60, 200, 20);
childFrame.getContentPane().add(lblNewMenu);
input = new JTextField();
String userInput = input.getText();
input.setBounds(lblNewMenu.getX() + 80, lblNewMenu.getY(), 250, 30);
childFrame.getContentPane().add(input);
btnMenuInput = new JButton("Create New Menu");
btnMenuInput.setBounds(120, 100, 200, 30);
btnMenuInput.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
model.addElement(userInput);
menuList.setModel(model);
childFrame.setVisible(false);
Entree selectedEntree = (Entree)cboEntrees.getSelectedItem();
Side selectedSide = (Side)cboSides.getSelectedItem();
Salad selectedSalad = (Salad)cboSalads.getSelectedItem();
Dessert selectedDessert = (Dessert)cboDesserts.getSelectedItem();
Menu menu = new Menu(userInput, selectedEntree, selectedSide, selectedSalad, selectedDessert);
menuArray.add(menu);
}
});
childFrame.getContentPane().add(btnMenuInput);
}
});
mainframe.setVisible(true);
정확히 원하는 작업을 수행하는 [How List to Use] (https://docs.oracle.com/javase/tutorial/uiswing/components/list.html)의 스윙 튜토리얼 섹션을 읽으십시오. . 또한 setBounds()를 사용하지 마십시오. Swing은 레이아웃 관리자와 함께 사용하도록 설계되었습니다. 자습서의 예제는 레이아웃 관리자를 사용합니다. – camickr