当前位置: 首页 > 面试题库 >

如何全局更改JTable行高?

谈阎宝
2023-03-14
问题内容

我正在使用Nimbus L&F。我正在尝试通过使用以下代码来全局更改所有JTable的字体大小:

NimbusLookAndFeel nimbus = new NimbusLookAndFeel();
UIManager.setLookAndFeel(nimbus);
UIDefaults d = nimbus.getDefaults();
d.put("Table.font", new FontUIResource(new Font("SansSerif", Font.PLAIN, 18)));

它正在工作,应用程序中所有JTable的行都使用新字体。我正在使用较大的字体大小,以使表在较大的分辨率下更具可读性。

但是问题是行高没有改变,导致字体被截断。我尝试了以下代码:

d.put("Table.contentMargins", new Insets(50,50,50,50));
d.put("Table:\"Table.cellRenderer\".contentMargins", new Insets(50,50,50,50));

但这并没有改变显示表中的任何内容。

是否可以在不调用setRowHeight()每个JTable实例的情况下全局更改行高?


问题答案:

基本上,没有什么是故意的。BasicTableUI中的相关代码注释:

// JTable's original row height is 16.  To correctly display the
// contents on Linux we should have set it to 18, Windows 19 and
// Solaris 20.  As these values vary so much it's too hard to
// be backward compatable and try to update the row height, we're
// therefor NOT going to adjust the row height based on font.  If the
// developer changes the font, it's there responsability to update
// the row height.

从好的方面说,像fi Nimbus这样的一些LAF尊重rowHeight的ui属性:

UIManager.put("Table.font", new FontUIResource(new Font("SansSerif", Font.PLAIN, 28)));
// here simply the font height, need to do better 
int height = 28;
UIManager.put("Table.rowHeight", height);


 类似资料:
  • 我不熟悉JTable。 我想在button press事件中在运行时更新jtable数据。 这是我的密码。 但按下“更新”按钮后不会更新。 有人能解决我的问题吗? 提前谢谢。。

  • 问题内容: 我有一个可编辑单元格。当我单击一个单元格时,它将进入编辑模式;当我使用方向箭头在单元格中移动时,也会发生同样的情况。现在,我想选择单元格而不是开始编辑,并且仅在按下键时才编辑单元格。 如果需要任何其他信息,请索取。 编辑:键的动作 现在这是用于左箭头动作,不难从这一个推论出其余三个: 这是您绑定此操作的方式: 哦,我差点忘了,要选择单元格而不是在“鼠标单击”上进行编辑: 将必须添加到表

  • 我试图在基于swing的GUI中更改的背景。我已将该表添加到中。但是,表格中没有单元格的区域不会改变颜色。我尝试更改滚动窗格的背景色和前景色。然而,这也无济于事。我需要编辑JTable的哪个组件来更改白色背景。下面是我代码的一部分。 JTable的代码

  • 问题内容: 我使用java.util.logging.Logger作为应用程序的日志记录引擎。每个类都使用自己的记录器,即每个类都有: 我想为我所有的班级设置一个日志记录级别,并且能够更改它(即,将设置放在一个地方)。除了使用全局变量并手动将每个记录器设置为变量之外,还有其他方法吗? 问题答案: 正如Andy回答的那样,在大多数情况下,您应该使用属性文件和VM参数,因此它与您的代码无关。 但是,如

  • 问题内容: 我刚刚创建了angularJS应用程序。 这是我的 index.html app.js 我有login.html,register.html和forgotpassword.html,home.html。每个人在单独的文件中都有单独的控制器。login.js,register.js,forgot.js,home.js。 login.js 同样,我在其他控制器中也有post方法。 我想要的

  • 问题内容: 我试过了: 不起作用 编辑:此代码仅在我的项目中不起作用。在其他项目中工作。我可能已经更改了阻止颜色更改的属性。也许NetBeans具有一些保留默认颜色的属性。我注意到了别的东西。我项目中标题的颜色以不同的方式闪烁。在可以进行颜色更改的示例中,我看到了不同的图形。 编辑2:其他。我注意到按钮也不会改变颜色。必须是通用的。希望这可以帮助。不幸的是,SSCCE在这种情况下不起作用,因为我无