我正在尋找一種方法來底部填充的JTable頂部,例如:HOWTO設置JTable中生長到頂部
1行:
[clean space]
row2
row1
看着的ComponentOrientation - 似乎它只允許從右到左但不下到了
也看不出使用LookAndFill
任何想法,任何方式?
我正在尋找一種方法來底部填充的JTable頂部,例如:HOWTO設置JTable中生長到頂部
1行:
[clean space]
row2
row1
看着的ComponentOrientation - 似乎它只允許從右到左但不下到了
也看不出使用LookAndFill
任何想法,任何方式?
我希望這是你正在尋找的行爲:
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時間。
謝謝你天網,上面有一個解決方案 –
我找到了解決方案,謝謝各位!
通過將表格標題提取到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);
感謝你們!
您可以嘗試按相反順序排列結果,然後將它們放入您的'JTable'中,以便將空行添加儘可能多的數據,因爲您的結果已經反轉。爲了更好地提供幫助,請儘快發佈[mcve],並且不要忘記說明您想要在上面放置多少行,是不是隻有一行? – Frakcool
對我來說看起來不可能。您可以嘗試重新定義'JTable.getCellRect','JTable.rowAtPoint'和'JTable.columnAtPoint'方法,但這很困難。如果你運氣好的話,這將在沒有UI變化的情況下工作(機會不高於5%),否則你將需要基於當前使用的UI創建你自己的LookAndFeel。 –
謝謝你Frakcoll和Sergiy,下面有一個解決方案,如果你想知道 –