在JTable的特定列下对齐其他组件(如按钮,标签等)的方法是什么?例如,我想在复选框的下方添加一个复选框,用于选择该特定列中的所有值。JTable - 在列下方对齐组件
1
A
回答
6
,据我了解,中TableColumnModelListener使用,从适当调整大小事件和重新排序
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class TableFilterRow extends JFrame implements TableColumnModelListener {
private static final long serialVersionUID = 1L;
private JTable table;
private JPanel filterRow; // Panel for text fields
public TableFilterRow() {
table = new JTable(3, 5);
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane);
table.getColumnModel().addColumnModelListener(this);
filterRow = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
for (int i = 0; i < table.getColumnCount(); i++) {
filterRow.add(new JTextField(" Sum at - " + i));
}
columnMarginChanged(new ChangeEvent(table.getColumnModel()));
getContentPane().add(filterRow, BorderLayout.SOUTH);
}
// Implement TableColumnModelListener methods
// (Note: instead of implementing a listener you should be able to
// override the columnMarginChanged and columMoved methods of JTable)
@Override
public void columnMarginChanged(ChangeEvent e) {
TableColumnModel tcm = table.getColumnModel();
int columns = tcm.getColumnCount();
for (int i = 0; i < columns; i++) {
JTextField textField = (JTextField) filterRow.getComponent(i);
Dimension d = textField.getPreferredSize();
d.width = tcm.getColumn(i).getWidth();
textField.setPreferredSize(d);
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
filterRow.revalidate();
}
});
}
@Override
public void columnMoved(TableColumnModelEvent e) {
Component moved = filterRow.getComponent(e.getFromIndex());
filterRow.remove(e.getFromIndex());
filterRow.add(moved, e.getToIndex());
filterRow.validate();
}
@Override
public void columnAdded(TableColumnModelEvent e) {
}
@Override
public void columnRemoved(TableColumnModelEvent e) {
}
@Override
public void columnSelectionChanged(ListSelectionEvent e) {
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new TableFilterRow();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
1
相关问题
- 1. JTable头对齐
- 2. Flex:左下对齐组件?
- 3. 在JTable列中设置正确的对齐方式
- 4. 在LinearLayout下方对齐RecyclerView
- 5. 使分页组件和下拉对齐
- 6. 在RelativeLayout中对齐组件
- 7. 组件对齐java
- 8. JTabbedPane对齐组件
- 9. 基于值渲染器列对齐来设置JTable头水平对齐
- 10. 左对齐方程组
- 11. 在输入下方对齐文本
- 12. 在Chrome中对齐下拉列表
- 13. 中心将jtable对齐到jscrollpane
- 14. JTable内容是中心对齐的
- 15. 使用adf组件对齐组件
- 16. Jtable,为每个行使用不同的对齐方式
- 17. 对齐TableRow中的组件
- 18. JavaFX HBox组件对齐
- 19. 以形式对齐组件
- 20. 如何左或右对齐JTable中的列标题
- 21. 设置JTable中列水平对齐,而无需使用DefaultTableCellRenderer
- 22. 在动画结束时,组件对齐
- 23. 下拉式组合框不对齐
- 24. 在JMenu组件中设置标题文本的对齐方式
- 25. 文件列表未对齐
- 26. Taber over JTable组件
- 27. 对齐酥料饼到左下方
- 28. 下拉列表中的文本对齐
- 29. 下拉列表对齐问题(HTML/CSS)
- 30. 对齐问题与下拉列表
标题中的复选框怎么样? http://java-swing-tips.blogspot.de/2009/02/jtableheader-checkbox.html – Stephan 2012-08-02 13:25:06
你想把JComponent放在JTable下alingh它们与当前列的wight并且调整它们的大小或调整列大小或重新排列? – mKorbel 2012-08-02 15:26:07
我想把它们放在列的下方,并调整它们与调整大小 – Bober02 2012-08-02 16:12:11