如何使可滚动JList添加从JOptionPane获取的详细信息

时间:2010-07-08 05:22:48

标签: java swing jlist joptionpane scrollable

我想通过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?任何建议。

非常感谢

3 个答案:

答案 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,以便以有意义的方式展示您的商品......