标签: tablecolumn

如何获取JTable列的标头组件的最小首选宽度,以使其不能调整为小于值的大小?

我试图阻止我的JTable重新调整大小,使标题小于他们持有的文本的大小.我遇到的问题是,我得到的每个标头组件的最小首选宽度只有10,当每个标头组件中的值是"标头1","标头2","标头3"等时,这显然太小了上.

我花了很多时间搜索SO并尝试实现各种建议,但尚未设法遇到解决方案.请查看我正在使用的当前代码作为扩展JTable的一部分:

public class MyTable extends JTable {

private Map<Integer, Integer> minSizeMap;

public void calculateMinColumnSizes() {

    int width = 0;
    int row = 0;
    minSizeMap = new HashMap<Integer, Integer>();

    for (int column = 0; column < columnModel.getColumnCount(); column++) {
        TableColumn tableColumn = columnModel.getColumn(column);
        TableCellRenderer renderer = tableColumn.getCellRenderer();
        Component comp = this.prepareRenderer(renderer, row, column);
        width = Math.max(comp.getPreferredSize().width, width);
        minSizeMap.put(tableColumn.getModelIndex(), width);
    }
   }
}
Run Code Online (Sandbox Code Playgroud)

原始代码来自kleopatra对如何将JTable列调整为字符串长度的答案,但是我已经更改了部件,因为我只想获得每个列标题的最小首选宽度,并在调整大小后存储它以供以后比较.

在调用方法之前已经设置了所有模型,所以当TableColumn的minWidth和preferredWidth默认值分别为15和75时,我对组件首选宽度的得分感到有点困惑.

关于我做了什么/理解错误的任何想法?

java swing header jtable tablecolumn

4
推荐指数
1
解决办法
2481
查看次数

通过另一个表中的列更新一个表中的列

我有2张桌子'A'和'B'.两者都有一个共同的列'name',并通过列'id'相互链接.表A中的列'name'是空的,而它有表B中的数据.我的任务是将表B中该列中的所有数据填充到具有相应ID的表A.

我正在使用以下查询:

UPDATE A
SET A.name = (SELECT B.name from B WHERE A.id = B.id)
WHERE EXISTS
(SELECT B.name from B)
Run Code Online (Sandbox Code Playgroud)

一旦我在SQL开发人员中运行查询,它就会冻结,我必须强行关闭它.谁能告诉我查询有什么问题?

sql oracle oracle10g sql-update tablecolumn

4
推荐指数
1
解决办法
9959
查看次数

按列名称或标题查找列#JTable

我想以不同的形式为我的jtables实现一个通用验证类来检查qty列,因为不同形式的不同表中的qty列No是不同的.为此,我希望在C#或VB中按列名称获取列值.

我的要求如下.

 int qty=jtable.getValueAt(rowNo,"columnName");
Run Code Online (Sandbox Code Playgroud)

现在我正在使用

 int qty=jtable.getValueAt(rowNo,colNo);
Run Code Online (Sandbox Code Playgroud)

有没有办法按列名称或JTable标题查找列#?

java swing jtable tablecolumn

4
推荐指数
3
解决办法
1万
查看次数

JavaFX TableView的一列中的多个组件

我正在使用JavaFx 2.2.我遇到的问题是我无法在TableView列中放置不同的组件.例如,我有两列

1)答案

2)AnswerType

如果AnswerType包含"Multiple Choice",则Answer Column中的相应单元格应显示ComboBox,否则它应显示TextField.

我在下面有一个代码示例,但它显示的是ComboBox或TextField,但不能同时显示同一列的不同单元格.

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Callback;
import javafx.scene.control.cell.ComboBoxTableCell;

public class TableCellWithMultipleComponent extends Application {

     @SuppressWarnings("rawtypes")
TableColumn answerTypeCol; 
@SuppressWarnings("rawtypes")
TableColumn answerCol; 
ObservableList<String> namesChoiceList;

public static void main(String[] args) {
    launch(args);
}

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void start(final Stage primaryStage) {
    primaryStage.setTitle("Table Cell With Multiple Components");

     TableView<Person> table …
Run Code Online (Sandbox Code Playgroud)

javafx tableview tablecell javafx-2 tablecolumn

4
推荐指数
1
解决办法
8700
查看次数

p:列呈现属性似乎不适用于p:dataTable var

我写了一个代码:

<p:column headerText="Edit" width="40" rendered="#{(leaveDetails.strLeaveStatus == 'Canceled') or (leaveDetails.strLeaveStatus == 'Availed')}">
    <p:commandLink actionListener="#{userLeaveBean.editAppliedLeave}" title="Edit" disabled="true" process="@this" update="leaveDataTable" immediate="false">
        <h:graphicImage url="resources/images/edit.JPG"/>
            <f:attribute name="userId" value="#{employee.name}"/>
            <f:attribute name="editFirstHalf" value="#{leaveDetails.strStartTiming}"/>
            <f:attribute name="editSecondHalf" value="#{leaveDetails.strEndTiming}"/>
            <f:attribute name="editFrom" value="#{leaveDetails.dtLeaveFromDate}"/>
            <f:attribute name="editTo" value="#{leaveDetails.dtLeaveToDate}"/>
            <f:attribute name="leaveId" value="#{leaveDetails.strLeaveId}"/>
    </p:commandLink>
</p:column>
Run Code Online (Sandbox Code Playgroud)

但渲染的属性不适用于该条件.如何使用逻辑运算符使条件有效?使用PrimeFaces 3.4.2

datatable jsf primefaces tablecolumn conditional-rendering

4
推荐指数
2
解决办法
7817
查看次数

Slickgrid:最终列自动调整大小以使用所有剩余空间

我正在使用SlickGrid,并努力寻找以下优雅的解决方案:

  1. 所有列在首次渲染时必须具有特定的初始宽度,但之后可以调整大小
  2. 调整窗口大小时,最后一列应自动填充剩余的列空间

我见过:


在调整浏览器窗口大小时, 使一个列填充SlickGrid中的剩余空间而不会弄乱显式宽度列调整网格大小
如何在SlickGrid中自动调整列的大小?

但这些似乎并没有完全符合我的需要.如果我使用forceFitColumns选项,那么所有列都将自动调整大小(除非我对它们放置了maxsize).在window.resize上使用resizeCanvas效果很好 - 但它仍然只有在forceFitColumns为true时才有效.

如果我设置minWidth=maxWidth- 那么我无法调整列的大小.

有什么建议?

autosize slickgrid tablecolumn

4
推荐指数
1
解决办法
7210
查看次数

为JTable指定特定于列的TableCellRenderers

我有一个JTable显示双倍的多列,其中一些是比率,其他列是美元值.我想指定一个TableCellRenderer用于比率,另一个用于美元值.

java教程说"要指定特定列中的单元格应该使用渲染器,您可以使用该TableColumn方法setCellRenderer".这很有帮助,但我不清楚我应该在什么时候将这种方法称为我TableColumn的方法.有这样做的标准方法吗?我应该JTable在其构造函数中创建一个自定义的自定义吗?还是习俗TableColumnModel?理想情况下,我希望能够从TableModel我已有的自定义中做到这一点,尽管这似乎不太可能.

任何帮助,将不胜感激.谢谢

java swing jtable tablecellrenderer tablecolumn

3
推荐指数
1
解决办法
1458
查看次数

JavaFX TableView - 将表格列的内容居中

我有一个大问题。

我尝试将 TableColumn 的内容居中放置在 TableView 中。

我已经尝试了我在网上找到的所有东西,但实际上没有任何效果!

有没有人遇到/有同样的问题?任何解决方案?

希望得到帮助!

编辑:

好吧,我能够使用以下代码将静态单元格的内容居中:

tc_customer.setCellFactory(new Callback<TableColumn<TvAccounting, String>, TableCell<TvAccounting, String>>() {
                @Override
                public TableCell<TvAccounting, String> call(TableColumn<TvAccounting, String> p) {
                    TableCell<TvAccounting, String> tc = new TableCell<TvAccounting, String>();
                    tc.setAlignment(Pos.CENTER);
                    tc.setText("SOMETEXT");
                    return tc;
                }
            });
Run Code Online (Sandbox Code Playgroud)

但是内容应该来自数据库,我真的不知道如何从我在TABLEVIEWNAME.setItems方法中使用的 ObservableList 对象中获取数据......

我第一次使用这个代码:

tc_customer.setCellValueFactory(new PropertyValueFactory<TvAccounting, String>("Customer"));
Run Code Online (Sandbox Code Playgroud)

但是没有办法让这些内容居中!

请问有人可以帮我吗?

编辑:

感谢这个伟大的答案,我做到了!

代码如下:

tc_customer.setCellFactory(new Callback<TableColumn<TvAccounting, String>, TableCell<TvAccounting, String>>() {
                @Override
                public TableCell<TvAccounting, String> call(TableColumn<TvAccounting, String> p) {
                    TableCell<TvAccounting, String> tc = new TableCell<TvAccounting, String>(){
                        @Override
                        public void updateItem(String item, boolean empty) …
Run Code Online (Sandbox Code Playgroud)

javafx center tablecolumn

3
推荐指数
1
解决办法
1万
查看次数

如何从表列javafx中删除行

在此输入图像描述

这些是我的表格栏目 课程说明.如果单击一行(该行变为"活动"/突出显示),并按下" 删除"按钮,则应该删除该行,我该怎么做?

我的课程列的代码:(以及我添加到删除按钮的事件监听器?)

@SuppressWarnings("rawtypes")
TableColumn courseCol = new TableColumn("Course");
courseCol.setMinWidth(300);
courseCol.setCellValueFactory(new PropertyValueFactory<Courses, String>("firstName"));

final Button deleteButton = new Button("Delete");

deleteButton.setOnAction(.....
Run Code Online (Sandbox Code Playgroud)

java javafx tablecolumn

3
推荐指数
1
解决办法
1万
查看次数

访问JavaFx TableView / TableColumn中的嵌套属性

我有一个TableView,并且按如下方式访问列表对象的属性。这样很好。

    <TableColumn fx:id="dateColumn" editable="false" prefWidth="135.0" text="Date">
        <cellValueFactory>
            <PropertyValueFactory property="date" />
        </cellValueFactory>
    </TableColumn>
Run Code Online (Sandbox Code Playgroud)

但是,我想访问对象的嵌套属性,例如:

        <TableColumn prefWidth="100.0" text="Course">
            <cellValueFactory>
                <PropertyValueFactory property="house.bathroom"/>
            </cellValueFactory>
        </TableColumn>
Run Code Online (Sandbox Code Playgroud)

我的列表对象有一个getHouse(),而House有一个getBathroom()。不幸的是,这不起作用。我尝试了一些拼写变化,但没有运气。

java javafx properties tablecolumn

3
推荐指数
1
解决办法
67
查看次数