我正在研究客户端服务器应用程序,服务器将一些东西发送到客户端,客户端可以看到GUI中显示的项目。 我可以从服务器完美地发送所有内容,以便在客户端的JTextarea中显示。但是,我面临的一个问题是在客户端显示日期,我得到一个长文本,看起来像这个java.util.Gregeon CalenderCalender [时间?=等.....在GUI的textarea中。在所有文本之后,我仍然可以在textarea的底部看到日期,但格式不正确。
这是客户端代码的一部分,用于处理从服务器接收信息并在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());
}
}
}
答案 0 :(得分:2)
GregorianCalendar的toString
方法不会产生显示友好的时间字符串。在将其设置为文本区域之前,您需要使用DateFormatter将其转换为更“愉快”的格式。下面是一个可以扩展的简单示例:
Calendar calendar = new GregorianCalendar();
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = formatter.format(calendar.getTime());
答案 1 :(得分:1)
问题是你从输入字符串中获取时间:
String date = networkInput.nextLine();
int hrs = Integer.parseInt(date.substring(0,2));
int mins = Integer.parseInt(date.substring(3,5));
您的输入行看起来像“10:39” - 解析完整日期(包括日,月和年)并创建日历对象:
DateFormat df = new SimpleDateFormat("dd/mm/yyyy HH:mm");
Date date = df.parse(networkInput.nextLine());
然后使用日期对象,如果需要,可以随时使用。