Backgorund信息:
我在海军中有一个我的伙伴,他想知道我是否可以鞭打他一个小应用程序,当他有他的警卫职责时会计算,因为显然指望日历很难。我使用JOptionPane.showMessageDialog
给他输出日期。我就是这样做的。
GregorianCalendar knownDate = new GregorianCalendar(year,month,day);
GregorianCalendar[] futureDates = new GregorianCalendar[10];
for(int i = 0; i < 10; i++) {
futureDates[i] = new GregorianCalendar(year,month,day);
futureDates[i].add(Calendar.DAY_OF_MONTH,10*(i+1)); // duty every 10 days
}
String newline = System.getProperty("line.separator");
StringBuilder sb = new StringBuilder("Jakes duty dates:").append(newline);
for(GregorianCalendar d : futureDates) {
sb.append(months[d.get(Calendar.MONTH)]).append(" ");
sb.append(d.get(Calendar.DAY_OF_MONTH)).append(newline);
}
JOptionPane.showMessageDialog(null,sb.toString());
“唯一的问题”是您无法选择显示的文本。他想为IM和电子邮件选择它,因为只有半懒,这是什么意思,对吧? (唯一的问题是引用,因为我有一种感觉,他的范围会蔓延到死亡......哈哈)
我的问题:
是否有“一线解决方案”来制作可选的showMessageDialog
?
答案 0 :(得分:6)
我能够建立在trashgod的答案上。虽然他建议使用JList
,但我改为使用JTextArea(它提供了我需要的那种选择。)
这就是我正在做的事情:
JTextArea text = new JTextArea(sb.toString());
JOptionPane.showMessageDialog(null,text);
它的工作就像一个魅力!
=============================================== =
经过一些实验,我做到了这一点:
DefaultListModel model = new DefaultListModel();
for(GregorianCalendar g : futureDates) {
String m = months[g.get(Calendar.MONTH)];
String d = String.valueOf(g.get(Calendar.DAY_OF_MONTH));
model.addElement(m + " " + d);
}
JList jlist = new JList(model);
JOptionPane.showMessageDialog(null,jlist);
JOptionPane.showMessageDialog(null,jlist.getSelectedValue());
第二个框显示了我在第一个框中选择的内容。我对此印象非常深刻。现在被授予,这不是我想要的功能(顶部是),但这并不会让它变得不那么棒! : - )
答案 1 :(得分:1)
将日期添加到DefaultListModel
,创建JList
,然后将列表传递给showMessageDialog()
。它不止一行,但选择使用平台的copy
击键复制到剪贴板。
private static final DateFormat df = new SimpleDateFormat("dd-MMM");
private static void createAndShowGUI() {
DefaultListModel dlm = new DefaultListModel();
for (int i = 0; i < 10; i++) {
GregorianCalendar knownDate = new GregorianCalendar();
knownDate.add(Calendar.DAY_OF_MONTH, 10 * i);
dlm.add(i, df.format(knownDate.getTime()));
}
JList list = new JList(dlm);
JOptionPane.showMessageDialog(null, list);
}