我正在寻找一种从从底部到顶部填充JTable的方法,例如:
1行:
[clean space]
row1
添加第二行后:
[clean space]
row2
row1
看看ComponentOrientation - 似乎只允许从右到左但不允许从下到上
使用LookAndFill
也看不到任何方法有什么想法吗?
答案 0 :(得分:1)
我找到了一个解决方案,谢谢你们!
通过将表头提取到BorderLayout.NORTH并将表条目添加到BorderLayout.SOUTH,这非常简单。这样可以让桌子从下到上生长。
条目装饰器可以通过这种方式进一步反转表条目。
以下代码段:
final MyTableModel model = new ReverseOrderModelDecorator(new MyTableModel());
final JTable table = new JTable(model);
JTableHeader header = table.getTableHeader();
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(header, BorderLayout.NORTH);
mainPanel.add(table, BorderLayout.SOUTH);
谢谢你们!
答案 1 :(得分:0)
我希望这是您正在寻找的行为:
import java.awt.ScrollPane;
import java.util.Collections;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
/**
*
* @author Skynet
*/
public class JTableReverseFill {
public static void main(String[] args) {
Runnable r = new Runnable(){
@Override
public void run() {
JFrame frame = new JFrame("jtable-reverse");
frame.setSize(200,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable jt = new JTable();
MyReversedTableModel mtm = new MyReversedTableModel();
mtm.addColumn("col1");
mtm.addColumn("col2");
for(Integer i = 0; i < 1000; i++)
{
mtm.addRow(new Object[]{"cell" + i.toString(), "cell" + i.toString() + i.toString()});
}
jt.setModel(mtm);
ScrollPane sp = new ScrollPane();
sp.add(jt);
frame.add(sp);
frame.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
public static class MyReversedTableModel extends DefaultTableModel
{
public void reverse()
{
Collections.reverse(getDataVector());
}
@Override
public void addRow(Object[] rowData) {
reverse();
super.addRow(rowData);
reverse();
}
}
}
您也可以在模型外部调用reverse()
以节省一些CPU时间。