标签: tablecellrenderer

JTable自定义单元格渲染器焦点问题

我有一张这样的桌子.第二列使用JTextField渲染器,第三列使用基于JPasswordField的渲染器和编辑器.

在此输入图像描述

看起来不错.但问题是我们必须输入值并且必须点击"ENTER".在该图像中,我输入了密码,但未按Enter键.因此,如果我单击"保存并关闭"按钮,它将显示密码字段为空的错误.

以前我在JTabbedPane下只使用了JTextFields和JPasswordFields,效果很好.当我不得不添加越来越多的东西时,我把它改成了这样的表格.

现在我已经贴了一个标签让人们知道他们应该点击进入..这不太好.另一个大问题.在Nimbus的Atleast外观和感觉,我们得知这个领域仍然是焦点.在Windows系统外观中,无论字段是否聚焦,都没有太多明显的区别.

在此输入图像描述

当我点击"保存并关闭"按钮时,我需要用户名字段或密码字段来设置它的值.请帮我.

java user-interface swing jtable tablecellrenderer

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

着色jTable行

我想为jTable中的特定行着色..我使用此代码为列做了,

private class CustomCellRenderer extends DefaultTableCellRenderer {

/* (non-Javadoc)
 * @see    
javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
 */

    @Override
public Component  getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column) {

  Component rendererComp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus,row, column);

//Set foreground color
// rendererComp.setForeground(Color.red);
//Set background color
  rendererComp .setBackground(Color.pink);

 return rendererComp ;
 }

}
Run Code Online (Sandbox Code Playgroud)

我用上面的代码调用,

 jTable1.getColumnModel().getColumn(3).setCellRenderer(new CustomCellRenderer());
Run Code Online (Sandbox Code Playgroud)

但是我想对jTable中的行做同样的事情.在行的情况下没有getColumnModel()或getColumn().那么这样做的替代方法是什么?我是通过使用Java Swing在Netbeans中完成的.

java swing jtable tablecellrenderer

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

JTable行的默认颜色

我写了一个程序,我根据标准突出显示某些行.我发布了一个问题: - JTable CustomRenderer Issue

给出这个问题的解决方案是我需要为不符合条件的行设置其他颜色.所以我决定在其他地方我会使用默认颜色JTable.修改后的代码是

else{
           c.setForeground(DefaultLookup.getColor(this, ui, "Table.dropCellForeground")); 
           c.setBackground(DefaultLookup.getColor(this, ui, "Table.dropCellBackground"));
        } 
Run Code Online (Sandbox Code Playgroud)

到目前为止这么好,我得到了必要的行为,但是当我试图让jar跟随警告时: -

警告:DefaultLookup是内部专有API,可能会在将来的版本中删除

所以任何人都可以建议我是否有任何其他方法将行设置为默认颜色JTable.

java swing background jtable tablecellrenderer

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

jtable cellrenderer在运行时更改单元格的背景颜色

我正在尝试创建一个表格和颜色特定的单元格,黄色,红色或白色,具体取决于其他列的内容.为此,我循环填充值的行,然后检查内容.对于当前显示在屏幕上的每一行都可以正常工作,但是当程序到达未显示的行时,或者如果用户尝试滚动每个单元格,则将其背景颜色更改为白色.我在网上搜索了解决方案,唯一合理的想法是在每次循环后重置cellRenderer,这不起作用,因为它也会重置每个单元格.

我希望有人知道这方面的解决方案,或者可以让我知道我在哪里搞砸了什么.

我正在使用这个循环

for(int e = 0; e < modules.size(); e++)
    {
    gui.clearOutputStream();
    gui.getOutputStream().setText("Load Modul " + modules.get(e) + "\r\n");
    version = getVersion(modules.get(e));

    //Update current Row
    updateRow(gui.getReleaseTabelle(), e);
    }
Run Code Online (Sandbox Code Playgroud)

它调用这种方法

public void updateRow(JTable target, int row){
//...
//insert Values here
//...
CustomRenderer cr = new CustomRenderer();
        cr.tab = target;
        if(!target.getValueAt(row, 2).equals(target.getValueAt(row, 3)))
        {
            cr.Val1 = target.getValueAt(row, 1).toString();
            target.setValueAt("X", row, 1);
        }
        else if(!target.getValueAt(row, 7).equals(""))
        {
            cr.Val1 = target.getValueAt(row, 1).toString();
            target.setValueAt("Y", row, 1);
        }
        else
        {

        }
        target.getColumnModel().getColumn(1).setCellRenderer(cr);

}
Run Code Online (Sandbox Code Playgroud)

这是我的CustomRenderer

class …
Run Code Online (Sandbox Code Playgroud)

java swing jtable background-color tablecellrenderer

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

Java JTable禁用单个单元格选择边框高亮显示

我有一个JTable,每行有三列,见图:

在此输入图像描述

出于某种原因,取决于我选择的列,我在上面的图像中得到它周围的小深蓝色边框(V140116554).

我目前使用它来选择整行:

vTable.setRowSelectionAllowed(true);
Run Code Online (Sandbox Code Playgroud)

我怎么能禁用它?

编辑:

添加了一个类:

public class VisitorRenderer extends DefaultTableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
        setBorder(noFocusBorder);
        return this;
    }
} 
Run Code Online (Sandbox Code Playgroud)

并补充说:

vTable.setDefaultRenderer(String.class, new VisitorRenderer());
Run Code Online (Sandbox Code Playgroud)

但仍然得到边界

java swing border jtable tablecellrenderer

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

Java JTable标题自动换行

我试图让表格上的标题有自动换行.我已设法做到这一点,但第一个数据行正在扩展.该表的代码是:

public class GenerateTable extends JTable {

    private JCheckBox boxSelect = new JCheckBox();
    private JTableHeader hdGen;

    public class LineWrapCellRenderer extends JTextArea implements TableCellRenderer {

        private static final long serialVersionUID = 1L;
        int rowHeight = 0;  // current max row height for this scan
        @Override
        public Component getTableCellRendererComponent(
                JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row,
                int column)
        {
            /*
             * row < 0 means header
             */
            if(row >= 0) {
                setWrapStyleWord(false);
                return this;
            }
            setText((String) value);
            setWrapStyleWord(true);
            setLineWrap(true); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecellrenderer jtableheader

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

JTable TableCellRenderer背景带有NimbusLookAndFeel颜色问题

我正在使用NimbusLookAndFeel.有了这种外观和感觉JTable的单元格背景是白色和浅灰色(它取决于行号).现在,我正在编写一些实现TableCellRenderer的自定义单元格渲染器.我需要根据JTable中单元格的位置设置这些渲染器的背景.

public class MyCellRenderer extends JLabel implements TableCellRenderer{


    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {

                Color bgColor = //need to retrieve the right cell background color
                setBackground(bgColor);
        return this;
    }

}
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得这样的Color值?

swing jtable look-and-feel nimbus tablecellrenderer

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

为JTable指定特定于列的TableCellRenderers

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

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

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

java swing jtable tablecellrenderer tablecolumn

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

JTable setCellRenderer将文本字段格式化为日期?

例如,我有一个日期存储为VARCHAR(yyyy-mm-dd)的SQLite数据库'2013-01-25'.我的查询从表中检索记录并将其显示为存储.我需要VARCHARJTable"2013年1月25日星期五"中显示数据.我怀疑使用setCellRenderer作为包含VARCHAR的列是可行的方法.此外,我认为这将是一个两步过程:首先,将VARCHAR转换为日期值,然后根据需要格式化日期.如果我从中获取VARCHAR值JTable并在以下位置显示它,我可以这样做JTextField:

MyDate = new SimpleDateFormat("yyyy-MM-dd").parse(rs.getString("My_Date"));
Run Code Online (Sandbox Code Playgroud)

然后根据需要格式化它

MyDateStr = new SimpleDateFormat("EEEE MMMM d, yyyy").format(MyDate);
Run Code Online (Sandbox Code Playgroud)

这一切都很好,也很好; 但是,我需要JTable列中的格式化显示.我从未使用过setCellRenderer,所以我可以使用一些帮助入门.

swing date jtable tablecellrenderer

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

CellRenderer - 使文本变为粗体

如何使JTable中的文本变为粗体,我尝试了以下内容,它确实适用于颜色但是为了使文本变粗,我在某处出错了

    class ColourRender extends DefaultTableCellRenderer {

    public Component getTableCellRendererComponent(JTable tblData,
            Object value, boolean isSelected, boolean hasFocus, int row,
            int column) {
        Component cellComponent = super.getTableCellRendererComponent(
                tblData, value, isSelected, hasFocus, row, column);

        if (tblData.getValueAt(row, 3).equals("M")) {
            cellComponent.setForeground(forMen);

        } else {
            cellComponent.setForeground(forWomen);

        }
        return cellComponent;
    }

    class boldRenderer extends DefaultTableCellRenderer {

        public Component getTableCellRendererComponent(JTable tblData,
                Object value, boolean isSelected, boolean hasFocus,
                int row, int column) {
            Component cellComponent = super.getTableCellRendererComponent(
                    tblData, value, isSelected, hasFocus, row, column);

            if (tblData.getValueAt(row, 1).equals(bib)) {
                cellComponent.setFont(cellComponent.getFont().deriveFont(
                        Font.BOLD)); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable custom-renderer tablecellrenderer

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