所以我有自定义的 CellEditors 和 CellRenderers,尽管我正在做
component.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
component.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
component.setOpaque(true);
Run Code Online (Sandbox Code Playgroud)
在我的 getTableCellRendererCompoent 中,颜色仅与其他每一行匹配,因为我尝试过的大多数外观和感觉似乎都在交替它们。如何以与表的其余部分相匹配的方式提取颜色值?我也非常希望能够制作漂亮的边框来匹配来自 DefaultTableCellRenderer 的渲染器。
我试图剖析 DefaultTableCellRenderer,但在试图追踪这个 UI 对象时迷失了方向。我是否只需要从 UIManager 中提取正确的属性?正确方向的引导将不胜感激。
谢谢大家,这个网站很棒。约书亚
是否有标准的Aqua方式来处理几乎无限的文档?
例如,想象一下基于图块的游戏的关卡编辑器.该级别没有预设大小(虽然它在技术上受到NSInteger大小的限制); 瓷砖可放置在网格上的任何位置.是否有滚动浏览此类文档的标准界面?
我不能简单地将滚动限制为已经具有切片的区域,因为用户需要能够在该边界之外添加切片.任意创建一个级别大小,即使它很容易被用户改变,也不是理想的.
有没有人见过处理这个问题的应用程序?
我有一个新的派生类,JButton它给了我一个Enter-Button的形状.
现在我想让它填充与默认相同的渐变JButton.但是我不知道.我怎么能这样做?
此刻它充满了纯黑色.
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class EnterButton extends JButton {
private Polygon shape;
public EnterButton() {
this.shape = new Polygon();
// initialisiere Form
this.initialize();
}
protected void initialize() {
Point p1, p2, p3, p4, p5, p6;
this.setSize(90, 120);
p1 = new Point(0, 0);
p2 = new Point(0, 60);
p3 = new Point(30, 60);
p4 = new Point(30, 120);
p5 = new Point(90, 120); …Run Code Online (Sandbox Code Playgroud) 我使用Java在Netbeans中开发了一个小型桌面应用程序.该应用程序正在按预期工作.我是在WIN7下开发的.
当我在Microsoft Windows上运行它时,UI的外观与Win XP Metal主题类似,当我在MAC上运行它时,它显示了我相同的主题.我想改变操作系统的主题.现在主题是适合Windows我正在寻找MAC的解决方案.
我想验证表格单元格中的用户输入,并且我使用 Nimbus 外观和感觉。以下是验证整数输入的单元格编辑器的代码:WholeNumberField
它扩展JTextField并添加了输入验证。
当我为列设置它时,它工作正常,但无法容纳文本:

当我使用默认单元格编辑器时,一切看起来都很好:

这个编辑器如何看起来像默认编辑器?
在显示GUI之前,如果我有这样的代码块:
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("GTK+".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception ex) {}
Run Code Online (Sandbox Code Playgroud)
例如,我在ubunut中使用主题GTK +.可以使用其他选项,如Nimbus等.现在,一旦我启动应用程序,它就会加载并显示此主题.但无论如何我可以实时改变主题.因为如果我改变它,我必须关闭GUI并用新主题再次加载它?
所以我有一个swing GUI,我根据另一个GUI类的一些输入改变它的默认外观和感觉,使用类似这样的东西:
javax.swing.UIManager.setLookAndFeel("newlook&feel");
SwingUtilities.updateComponentTreeUI(this);
pack();
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是在控制台上我看到每次调用这个异常时会抛出如下消息:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)
它指的是来自内部Java类的类的行号.这可能是什么问题,或者我错过了什么.
只是一点,在这种情况下SwingUtilities.isEventDispatchThread()返回false.
有没有办法在Netbeans预览设计屏幕中显示程序:

而不是默认运行程序GUI:

?
我将项目的LAF设置为System默认外观.现在我正在尝试将JDesktopPane放在我的一个面板中,但我希望所有内部框架都使用java默认的LAF.有没有办法在不改变整个项目的LAF的情况下改变它?
背景:
从文档中可以看出,该方法SwingUtilities.updateComponentTreeUI()要求树(什么树?)中的每个组件调用该方法来更新自己的UI 属性updateUI()。
SwingUtilities.updateComponentTreeUI()强烈建议在我们设置LAF之后调用,调用方法:UIManager.setLookAndFeel(LAFClassName),否则LAF主题无法应用于某些组件,最糟糕的是,某些组件无法重新设计(并且可能会抛出一些异常?)。
我对这类事情很陌生,在发现更具启发性的方法SwingUtilities.updateComponentTreeUI() 后UIManager.setLookAndFeel(LAFClassName)我发现了该方法。
在发现之前SwingUtilities.updateComponentTreeUI()我一直遇到一些问题/Exceptions/NullPointerExceptions,事实是我真的不明白它们的原因,直到我没有发现该SwingUtilities.updateComponentTreeUI()方法,这让我明白树中的某些组件不能被更新为新的 LAF。
具体/实际问题:
例如,如果我有一个
子框架
(动态实例化或由 ActionEvent(单击)触发)
主框架
),我在其中设置外观属性,然后调用SwingUtilitiesupdateComponentTreeUI()传递给它的引用mainJFrame:
SwingUtilities.updateComponentTreeUI(mainJFrame),
最后一个是否会更新其所有子组件/subJFrames(从而更新subJFrame我设置 LAF 的位置)?
这不是一个微不足道的问题(还要记住文档所说的内容),因为我调用UIManager.setLookAndFeel(LAFClassName)中的方法subJFrame(这个调用实际上做了什么?),然后我调用SwingUtilities.updateComponentTreeUI()方法传递给它一个对 的引用mainJFrame,那么什么是LAF 主题将应用于mainJFrame?的所有子组件 如果某些子组件/subJFrame尚未初始化?