我想通过JOptionPane(已经完成)重复从用户那里获取输入(可能是使用按钮)并将详细信息存储在某些内容中(如何处理动态对象数组)并将此信息显示为可滚动JList中的列表
我的代码
import java.awt.GridLayout;
import javax.swing.*;
class Flight {
public static void main(String[] args) {
//Panel
JPanel panel = new JPanel(new GridLayout(7, 2,20, 20));
//Add textfields here
JTextField txtflightno = new JTextField(8);
JTextField txtmechanicalstatus = new JTextField(8);
JTextField txtmedicalstatus = new JTextField(8);
JTextField txtfuellevel = new JTextField(8);
JTextField txtweathercondition = new JTextField(8);
JTextField txtfrequency = new JTextField(8);
JTextField txtflightpath = new JTextField(8);
//Add labels here
JLabel lblflightno = new JLabel("Flight No : ");
JLabel lblmechanicalstatus = new JLabel("Mechanical Status:");
JLabel lblmedicalstatus = new JLabel("Medical Status:");
JLabel lblfuellevel = new JLabel("Fuel Level:");
JLabel lblweathercondition = new JLabel("Weather Condition:");
JLabel lblfrequency = new JLabel("Frequency:");
JLabel lblflightpath = new JLabel("Flight Path:");
//Adding flightno to panel
panel.add(lblflightno);
panel.add(txtflightno);
//Adding mechanicalstatus to the panel
panel.add(lblmechanicalstatus);
panel.add(txtmechanicalstatus);
//Adding medicalstatus to the panel
panel.add(lblmedicalstatus);
panel.add(txtmedicalstatus);
//Adding fuellevel to the panel
panel.add(lblfuellevel);
panel.add(txtfuellevel);
//Adding weathercondition to the panel
panel.add(lblweathercondition);
panel.add(txtweathercondition);
//Adding frequency to the panel
panel.add(lblfrequency);
panel.add(txtfrequency);
//Adding flightpath to the panel
panel.add(lblflightpath);
panel.add(txtflightpath);
panel.setBounds(0, 0, 800, 600);
int result = JOptionPane.showConfirmDialog(null, panel, "Flight Details",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
}
}
}
我如何存储飞机细节?我该如何实现可滚动的JList?任何建议。
非常感谢
答案 0 :(得分:6)
如How to Use Lists中所述,JList
使用列表模型作为其显示的数据源。只需将您的数据添加到DefaultListModel
,然后使用它来构建列表。
DefaultListModel dlm = new DefaultListModel();
// add data
JList list = new JList(dlm);
panel.add(new JScrollPane(list));
答案 1 :(得分:4)
要使JList可滚动,只需将其嵌入JScrollPane即可。而不是
add(myList, constraints);
DO
add(new JScrollPane(myList), constraints);
要扩展列表,只需获取JList的ListModel(使用getListModel
)并使用add
添加对象。
有关使用ListModels in Sun's tutorial的更多信息。
更多关于ScrollPane in the Tutorial的内容。
答案 2 :(得分:0)
您必须使用您在代码段中遗漏的ActionListener
按钮。
在OK选项中:
JList jlist = ...;
jlist.add(txtflightno.getText());
jlist.add(txtmechanicalstatus.getText());
jlist.add(txtmedicalstatus.getText());
....
....
&
add(new JScrollPanel(myList), constraints);
在此之后使用Component的validate方法来更新具有此新项目的列表。 但是你要记住的一件事是列表按行显示每个项目。 我建议您使用JTable,以便以有意义的方式展示您的商品......