public class GUI extends Frame implements ActionListener, WindowListener {
private static final long serialVersionUID = -693036000167528691L;
private Button run,findAll,sortByNumberOfStretchesFound, sortByLongestStretch;
private TextField selectionSizeStart, numberOfThreads, selectionSizeEnd, minimumStretchSize, sequence;
private JTable table;
private String[] columnNames = new String[]{"#","Label","Label-Length","#Stretches Found","Unique","Longest Stretch"};
private int sortBy = 3;
private Object[][] data;
public GUI(String defaultSequence, int defaultSelectionMinimumSize, int defaultNumberOfThreads) {
table = new JTable(new DefaultTableModel(columnNames,0));
table.setAutoCreateRowSorter(true);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane scrollbar = new JScrollPane(table);
setLayout(new FlowLayout());
setVisible(true);
}
从javadocs forjtable
;setautocreaterowsorter
创建tablerowsorter
的实例,并从它的javadoc进行排序,如下所示
setcomparator
方法为列指定了comparator
比较器,请使用它。getColumnClass
返回的列类是String
,则使用collator.getInstance()
返回的comparator
。可比
,请使用调用compareto
方法的比较器
。TableStringConverter
,请使用它将值转换为String
,然后使用collator.getInstance()
返回的comparator
。collator.getinstance()
返回的comparator
对对象调用tostring
的结果。因此,如果您想要更改默认值(在本例中为5),您需要
比较器
,数据对象中的可比
或TableStringConverter
以实现自定义ToString
功能或者,您可以跳过所有这些,使用自己的自定义排序逻辑实现自定义rowsorter
。
编辑
class MyClass implements Comparator<Object> {
public int compare(Object o1, Object o2) {
if (o1 == null && o2 == null) {
return 0;
}
if (o1 == null) {
return 1;
}
if (o2 == null) {
return -1;
}
if (o1 instanceof Integer && o2 instanceof String) {
return 1;
}
if (o1 instanceof String && o2 instanceof Integer) {
return -1;
}
if (o1 instanceof Integer && o2 instanceof Integer) {
return ((Integer) o1).compareTo((Integer) o2);
}
return o1.toString().compareTo(o2.toString());
}
}
我从课本上抄了一个例子,但它拒绝编译。我是不是在什么地方打错了?出于某种原因,在客户端代码中,collections.sort(words)不允许程序编译。任何帮助都很感激。代码复制自Stuart Reges和Marty Stepp的“构建Java程序”第二版。我正试图通过复制来理解它。 该程序应该将一个CalendarDate对象装入一个ArrayList中。通过实现CalendarDate的可
问题内容: Oracle Java Community网站上的一篇文章提供了以下方法作为示例(对于JPA Converter,但这并不相关): 将String y强制转换为String val有什么用?有正当的理由吗? 原始文章:JPA的新增功能 问题答案: 这样的转换是完全没有必要的。我可以想象那是以前 但是后来参数类型更改为,而作者只是忘了删除强制类型转换。
问题内容: 我不明白为什么整数在串联中被视为字符串文字。例如 输出为:。 为什么不添加,为什么要添加? 问题答案: 该表达式从左到右求值。前两个操作数均为(10和30),因此第一个执行加法。 下一个获取操作数(40)和操作数(“ Sachin”),因此将其转换为并执行连接。 接下来的运算符获取一个操作数和一个操作数,并执行级联。 如果您想要不同的评估顺序,请使用括号: 这将输出。
我有一些奇怪的行为,我正努力向自己解释。浮点字段,称为“文本缩放”,变为零。 如果某些代码正在更改值,则可以解释这一点。然而,我希望通过将其设置为“私有最终浮点”,能够导致构建失败,或者至少是运行时异常,那么无论改变值的是什么,都将失败。但是如果我这样做,代码就不会失败——它工作得很好! 有谁能帮我理解这里可能发生的事情吗?为什么这个浮动会变成零,除非我把它设为最终值?这里有我不熟悉的Java i
我正在学习多线程,想写一些与竞争条件的代码。然而,这些代码不起作用:我已经运行了很多次代码,但它总是打印10,这是正确的结果,没有竞争条件。有人能说出原因吗?谢了。 下面是主要函数。它将创建10个线程来修改一个静态变量,并在最后打印这个变量。 以下是Foo的定义:
问题内容: 例如: 问题答案: 这是因为从索引0 in开始的长度为0的子字符串等于空字符串: 当然,任何字符串的长度为零的 每个 子字符串都等于空字符串。