2010-07-08 4 views
1

JOptionPane (이미 완료 됨)을 통해 반복적으로 사용자로부터 입력 (버튼 사용)을 받고 세부 사항을 저장하고 싶습니다 (동적 객체 배열)이 정보를 스크롤 가능한 JList에 목록으로 표시합니다.JOptionPane에서 얻은 세부 사항을 추가하기 위해 스크롤 가능한 JList를 만드는 방법


MY 코드


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는 어떻게 구현해야합니까? 어떤 제안.

많은 감사

How to Use Lists에서 설명하고있는 바와 같이
+0

여기에 좋은 답변이 있으니 허용되는 것으로 표시해야합니다. – BoffinbraiN

답변

6

JList는 표시 데이터의 소스로 목록 모델을 사용합니다. DefaultListModel에 데이터를 추가하고 목록을 작성하는 데 사용하십시오.

DefaultListModel dlm = new DefaultListModel(); 
// add data 
JList list = new JList(dlm); 
panel.add(new JScrollPane(list)); 
4

JList를 스크롤 할 수있게 만들려면 간단히 JScrollPane에 포함 시키십시오. 대신

add(myList, constraints); 

add(new JScrollPane(myList), constraints); 

단지 (getListModel 사용) JList의의의 ListModel를 얻을 목록을 확장하고 개체를 추가 할 add를 사용하려면 않습니다.

ListModels 사용에 대한 추가 정보 in Sun's tutorial.

ScrollPane에 대한 추가 정보 in the Tutorial도 마찬가지입니다.

+0

당신은'JScrollPane'을 의미합니까? – instinct

+0

@SandeepPareek : 예, 죄송합니다. 고침, 고마워! –

0

코드 스 니펫에서 놓친 Button의 ActionListener을 사용해야합니다. OK (확인) 옵션에서

:

JList jlist = ...; 

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

& 

add(new JScrollPanel(myList), constraints); 

구성 요소의 사용 validate 메소드이 새로운 항목으로 목록을 업데이트하는 후. 하지만 기억해야 할 것은 목록에 각 항목이 행 단위로 표시된다는 것입니다. 의미있는 방식으로 항목을 표시 할 수있는 JTable을 사용하는 것이 좋습니다 ...

+0

코더 : @Haxed가 어디에서'ActionListener'를 필요로하는지 모르겠습니다. 'JOptionPane'의 OK 버튼이 처리해야합니다. 또, JList는 데이터를 직접 받아 들일 수 없습니다. 대신에'ListModel'가 사용되어야합니다. – trashgod