【问题标题】:How can I set the size of columns in a JTableBinding?如何在 JTableBinding 中设置列​​的大小?
【发布时间】:2014-05-06 11:58:53
【问题描述】:

我正在使用 NetBeans IDE 8.0 创建一个 GUI 程序,我需要显示一个包含不同大小列的表。
使用链接到 MySql 表的JtableBinding,它在网格中显示内容,所有列都设置为相同的宽度。
我会通过代码更改列宽,但我注意到JtableBinding 没有TableColumnModel,而我在JTable 对象中有它。

是否可以为 JtableBinding 中的每一列设置不同的大小
感谢所有给我回复的人。

【问题讨论】:

  • 您将创建具有自定义列宽的表结构,然后相应的对象将绑定 jtablebinding 尝试
  • 它不起作用。似乎 JTableBinding 没有看到 JTable 中的更改,即使我在绑定之前和之后进行了更改。 :(
  • I noted that for JtableBinding there is not a TableColumnModel - 我从未使用过 JTableBinding,但似乎您仍然需要 JTable,因此您更改了由 JTable 创建的 TableColumnModel 的 TableColumns。这必须在您为 JTable 设置 TableModel 之后完成。
  • “如何设置 JTableBinding 中的列大小?” 那是什么?我没有看到它列在docs..
  • @AndrewThompson 它是 jdesktop 的一部分。 (org.jdesktop.swingbinding.JTableBinding)

标签: java mysql swing jtable column-width


【解决方案1】:

这是我用 JTableBinding 实现的课程。设置列宽效果很好。

public class TMZeit extends JTable {
    private static final long serialVersionUID = 8639962215280391425L;
    private List<Zeit> list;
    private ResourceBundle bundle;
    private Object[][] columns;

    public TMZeit(ResourceBundle bundle) {
     this.list = ObservableCollections.observableList(new ArrayList<Zeit>());
       this.bundle = bundle;
     this._initComponents();
    }

    @SuppressWarnings({ "rawtypes", "unchecked" })
    private void _initComponents() {
       this._initColumns();

     JTableBinding<Zeit, List<Zeit>, JTable> jTableBinding = SwingBindings
        .createJTableBinding(AutoBinding.UpdateStrategy.READ,
            this.list, this);

     for (int i = 0; i < this.columns.length; ++i) {
         ELProperty<Zeit, String> property = ELProperty.create(String
            .format("${%s}", columns[i][1]));
         ColumnBinding columnBinding = jTableBinding
            .addColumnBinding(property);
         columnBinding.setColumnClass((Class<?>) this.columns[i][2]);
         columnBinding.setColumnName((String) this.columns[i][0]);
         columnBinding.setEditable(false);
     }

     jTableBinding.bind();

     for (int i = 0; i < this.columns.length; ++i) {
         this.getColumnModel().getColumn(i)
            .setPreferredWidth((Integer) this.columns[i][3]);
     }
    }

    private void _initColumns() {
    this.columns = new Object[][] {
        { this.bundle.getString("table.column.serno.tooltip"), "serno",
            Integer.class, 30 },
        { this.bundle.getString("table.column.project.tooltip"),
            "project", String.class, 230 },
        { this.bundle.getString("table.column.activity.tooltip"),
            "activity", String.class, 230 },
        { this.bundle.getString("table.column.time.tooltip"), "time",
            Integer.class, 50 } };
    }
 ...
 }

抱歉,格式错误。

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 2011-08-14
    • 2014-10-12
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    相关资源
    最近更新 更多