3

我想通过 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 ?有什么建议么。

非常感谢

4

3 回答 3

9

如何使用列表中所述,JList使用列表模型作为其显示的数据源。只需将您的数据添加到 aDefaultListModel中,然后使用它来构建您的列表。

DefaultListModel dlm = new DefaultListModel();
// add data
JList list = new JList(dlm);
panel.add(new JScrollPane(list));
于 2010-07-08T05:55:32.563 回答
4

要使 JList 可滚动,只需将其嵌入JScrollPane中。代替

add(myList, constraints);

add(new JScrollPane(myList), constraints);

要扩展列表,只需获取 JList 的 ListModel(使用getListModel)并使用add添加对象。

更多关于在 Sun 的教程中使用 ListModels的信息。

更多关于 ScrollPane的教程也在教程中。

于 2010-07-08T05:58:05.753 回答
0

您必须使用ActionListener您在代码片段中错过的按钮。

在确定选项中:

JList jlist = ...;

jlist.add(txtflightno.getText());
jlist.add(txtmechanicalstatus.getText());
jlist.add(txtmedicalstatus.getText());
....
....

& 

add(new JScrollPanel(myList), constraints);

在此之后,使用 Component 的 validate 方法用这个新项目更新列表。但是您应该记住的一件事是该列表按行显示每个项目。我建议您使用JTable以有意义的方式显示您的项目...

于 2010-07-08T05:58:28.763 回答