0

私はクライアントサーバーアプリケーションに取り組んでいます。これにより、サーバーはクライアントにいくつかのものを送信し、クライアントはGUIに表示されるアイテムを見ることができます。サーバーからすべてを完全に送信して、クライアント側の JTextarea に表示できます。しかし、私が直面している問題の 1 つは、クライアントに日付を表​​示することです。GUI のテキスト領域に、この java.util.Gregeon CalenderCalender[time?= etc..... のような長いテキストが表示されます。すべてのテキストの後、テキストエリアの下部に日付が表示されますが、正しい形式ではありません。

これは、サーバーから情報を受け取り、その情報を GUI に表示するクライアント側のコードの一部です。

        public void  displayItems() 
{
    Integer itemNumber = networkInput.nextInt();
    networkInput.nextLine();
    //String bidTime = networkInput.next();
    //= networkInput.next();

    DefaultListModel<String> lmdl = new DefaultListModel<String>();

    for(int i=0; i<itemNumber; i++)
    {
        String itemCode = networkInput.nextLine();
        String itemName = networkInput.nextLine();
        String itemDescription = networkInput.nextLine();
        String date = networkInput.nextLine();
        System.out.println(date);
        int hrs = Integer.parseInt(date.substring(0,2));
        int mins = Integer.parseInt(date.substring(3,5));
        Items item = new Items(itemCode,itemName,itemDescription, hrs, mins);
        itemList.add(item);

        lmdl.addElement(item.getItemCode());


    }
    ItemList.setModel(lmdl);// Add to List


}
   class ButtonHandler implements ActionListener 
   {
       private Object sel;
        public void actionPerformed(ActionEvent e) 
        {
            int selectedIx = ItemList.getSelectedIndex();
            String bid = txtBidAmount.getText();
            System.out.println("Sending the bid for " + itemList.get(selectedIx).getItemCode() + " for " + bid);

            output.println("bid");
            output.println(itemList.get(selectedIx).getItemCode());
            output.println(bid);

            String serverResponce = networkInput.nextLine();
            System.out.println(serverResponce);
            if(serverResponce.contains("success"))
            {
                //display sucess
                JOptionPane.showMessageDialog(frame,"Bid accepted");
            }
            else
            {
                JOptionPane.showMessageDialog(frame,"low bid");
            }


        }
   }

  class  RefreshListner implements ListSelectionListener{
     //String date = networkInput.nextLine();
    @Override
    public void valueChanged(ListSelectionEvent arg0) {

        Integer IDx = ItemList.getSelectedIndex();
        text.setText(itemList.get(IDx).getName()+ "\n" + itemList.get(IDx).getDescription() + itemList.get(IDx).getDeadline());


    }


  }

}

4

2 に答える 2

2

GregorianCalendarのtoStringメソッドは、表示しやすい時間文字列を生成しません。テキスト領域に設定する前に、 DateFormatter を使用して、より「快適な」形式に変換する必要があります。拡張できる簡単な例を次に示します。

Calendar calendar = new GregorianCalendar();
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = formatter.format(calendar.getTime());
于 2013-03-19T21:38:46.727 に答える
1

問題は、入力文字列から時間がかかることです:

String date = networkInput.nextLine();
int hrs = Integer.parseInt(date.substring(0,2));
int mins = Integer.parseInt(date.substring(3,5));

入力行に "10:39" のようなものがあるようです - 完全な日付 (日、月、年) を解析し、Calendar オブジェクトを作成します。

DateFormat df = new SimpleDateFormat("dd/mm/yyyy HH:mm");
Date date = df.parse(networkInput.nextLine());

次に、日付オブジェクトを使用します。必要に応じて、それからちょうど時間に使用できます。

于 2013-03-19T22:27:54.680 に答える