当前位置: 首页 > 知识库问答 >
问题:

Java jtable:如何为简单的行标题而呈现左列单元格

乜栋
2023-03-14

下面是一个包含两列两行的简单表的代码。是否有人可以修改它,或者用简单的术语来解释,我如何为行标题的目的呈现最左边的列。

谢谢你。

import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.io.*;
import java.awt.image.BufferedImage;
import java.util.*;
public class GUITable extends JFrame{public GUITable(){


init();
  }

  public final void init(){
    String[] columnNames = {"", "Gross Weight"};

  Object[][] data = {
  {"", new Integer(100)},};

  final JTable table = new JTable(data, columnNames);
  table.setPreferredScrollableViewportSize(new Dimension(500, 70));
  table.setFillsViewportHeight(true);

  JScrollPane scrollPane = new JScrollPane(table);
  add(scrollPane);
}

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

public void run() {
try {
  UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Exception e) {
  e.printStackTrace();
}
  GUITable ex = new GUITable();
  ex.setVisible(true);
    }
    });
  }
}

共有1个答案

颛孙昆
2023-03-14

是-通过使用自定义的TableCellRenderer,您可以修改第一列(并且仅限于第一列)的显示方式。

基本上,您可以使用它仅在第一列上设置TableCellRenderer:

table.getColumnModel().getColumn(0).setCellRenderer(new CustomRenderer());

并且可以扩展DefaultTableCellRenderer来处理您想要执行的任何特殊呈现:

//Custom Renderer - does the default rendering except if told the row should be a different color
public static class CustomRenderer extends DefaultTableCellRenderer{

    public CustomRenderer(){
        super();
        //Customize the rendering however you want
        setBackground(UIManager.getColor("TableHeader.background"));
    }
}
import javax.swing.*; 
import javax.swing.table.DefaultTableCellRenderer;

import java.awt.*; 
public class TestTable extends JFrame{

    public TestTable(){ 
        init(); 
    } 

    public final void init(){ 
        String[] columnNames = {"", "Gross Weight"}; 

        Object[][] data = {{"", new Integer(100)},}; 

        final JTable table = new JTable(data, columnNames); 
        // Add Renderer to first column only
        table.getColumnModel().getColumn(0).setCellRenderer(new CustomRenderer());
        table.setPreferredScrollableViewportSize(new Dimension(500, 70)); 
        table.setFillsViewportHeight(true); 

        JScrollPane scrollPane = new JScrollPane(table); 
        scrollPane.setPreferredSize(new Dimension(300, 200));
        add(scrollPane); 
    } 

    public static void main(String[] args) { 
        SwingUtilities.invokeLater(new Runnable() { 

            public void run() { 
                try { 
                    UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); 
                } catch (Exception e) { 
                    e.printStackTrace(); 
                } 
                TestTable ex = new TestTable();
                ex.pack();
                ex.setVisible(true); 

            } 
        }); 
    } 

    //Custom Renderer - does the default rendering except if told the row should be a different color
    public static class CustomRenderer extends DefaultTableCellRenderer{

        public CustomRenderer(){
            super();
            //Customize the rendering however you want
            setBackground(UIManager.getColor("TableHeader.background"));
        }
    }

} 
 类似资料:
  • 问题内容: 与ListView不同,我们可以更新this.state.datasource。是否有任何方法或示例更新FlatList或重新呈现它? 我的目标是在用户按下按钮时更新文本值。 问题答案: 使用FlatList组件上的属性。 如文档所述: 通过传递给我们,确保更改时将重新呈现自己。如果不设置此道具,就不会知道它需要重新渲染任何项目,因为它也是a ,并且道具比较不会显示任何更改。

  • 我有一个Pandas DataFrame,,看起来像这样: 到目前为止,我正在构建一个单一的多图表HTML文件,如下所示: 我想在之后显示亮度的高程/等高线样式图,很像我在Excel中制作的这张图: 我希望颜色作为y轴上的值保持“从上到下”的排序,而深色作为x轴上的值保持“从左到右”的排序,就像上面的例子一样。 我不是数据科学家,也不经常使用Python。我为自己首先制作了而自豪,但我并没有,就我

  • 试图获取特定标题下的所有td(单元格) HTML: 方法: 实际结果: java.lang.IndexOutOfBoundsException:索引0超出长度0的边界 预期结果: 返回一个

  • 问题内容: 作为我对登录功能的Selenium测试的一部分,我想通过识别按钮的坐标并指示Selenium单击这些坐标来单击按钮。无需标识元素本身即可完成此操作(通过id,xpath等)。 我知道还有其他更有效的方式来运行click命令,但是我希望专门使用这种方法来最好地匹配用户体验。谢谢。 问题答案: 硒不会让你这样做。

  • 我正在React.js网站上浏览react教程(井字游戏),我想在用户单击它时单独设置每个正方形的样式。更具体地说,当轮到玩家 X 时,正方形应该变成红色,当轮到玩家 O 时,正方形应该变成蓝色。我试图使用道具和状态来改变颜色。但是,react 会更改所有方块,而不是单独更改方块的颜色。 以下是我迄今为止所尝试的。

  • 问题内容: 我有一个JTable,它带有一个实现了AbstractTableModel的自定义模型。 因为我已经实现了getColumnClass方法,所以布尔值像复选框一样呈现在表中。我想拦截复选框的状态更改,但是不幸的是,我无法直接添加鼠标侦听器,因为我没有对复选框本身的引用,它不是由我创建的。 如何设置鼠标侦听器以拦截复选框状态更改事件? 编辑: @jzd答案是正确的。我可以捕获setVal