我想将纹理应用于自定义形状.我认为这样可行:
.myTextureShape {
-fx-shape: "M0 0 L0 50 L25 25 L50 50 L50 0 Z";
-fx-background-image: url("resources/texture_bg.png");
-fx-background-repeat: repeat;
}
Run Code Online (Sandbox Code Playgroud)
但事实并非如此!我得到了正确的形状,但没有纹理.我所有其他区域都正确纹理化,所以我知道语法是正确的.我想这是因为它们默认是矩形的.
如果我使用以下样式:
.myTextureShape {
-fx-shape: "M0 0 L0 50 L25 25 L50 50 L50 0 Z";
-fx-background-color: red;
}
Run Code Online (Sandbox Code Playgroud)
然后我得到一个正确的红色背景.
如果两个属性都不兼容,如何将纹理应用于自定义SVG-pathed-shape?
PS:我的纹理PNG文件,是一个小的10*10光栅,我重复填充我的区域.
我正在尝试测试一个抽象类,而Mockito没有初始化我的成员变量.这是一个向您展示我的问题的简单示例.
这是一个初始化其"field"成员的抽象类:
import java.util.ArrayList;
import java.util.Collection;
public abstract class Foo {
private final Collection field = new ArrayList();
protected Foo() {
System.out.println("In constructor");
}
public boolean isNull(Object o) {
field.add(o);
return o == null;
}
abstract void someAbstractMethod();
}
Run Code Online (Sandbox Code Playgroud)
这里的测试类:
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
public class FooTest {
@Test
public void testSomething() {
final Foo foo = Mockito.mock(Foo.class);
Mockito.when(foo.isNull(Mockito.anyObject())).thenCallRealMethod();
Assert.assertFalse(foo.isNull("baaba"));
}
}
Run Code Online (Sandbox Code Playgroud)
当测试运行时,它会抛出一个NPE,因为变量'field'没有被初始化!
我究竟做错了什么?
我不明白Nimbus的替代行着色是如何工作的.看起来真的很疯狂!我想在这里澄清一切.
对于演示,让我们说我们想要一个交替红色和粉红色行的JTable(我不关心哪个颜色是第一个).
如果没有重新定义执行自己的"模2"的自定义cellRenderer,并且没有覆盖JTable的任何方法,我想列出启动一个应用程序和使用Nimbus属性获取具有自定义备用行颜色的JTable之间的必要步骤.
以下是我希望遵循的步骤:
这里的源代码:
public class JTableAlternateRowColors implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new JTableAlternateRowColors());
}
@Override
public void run() {
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
UIManager.getDefaults().put("Table.background", Color.RED);
UIManager.getDefaults().put("Table.alternateRowColor", Color.PINK);
final JFrame jFrame = new JFrame("Nimbus alternate row coloring");
jFrame.getContentPane().add(new JScrollPane(new JTable(new String[][] {
{"one","two","three"},
{"one","two","three"},
{"one","two","three"}
}, new String[]{"col1", "col2", "col3"}
)));
jFrame.setSize(400, 300);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); …Run Code Online (Sandbox Code Playgroud) 使用默认布局管理器,JLabel在调整框架大小时显示其省略号.
如图所示:
public static void main(String[] args) {
final JFrame jFrame = new JFrame("JLabel, show me your ellipsis!");
jFrame.getContentPane().add(new JLabel("Sure darling! Shrink me and I'll show you"));
jFrame.pack();
jFrame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
但是,MigLayout不会显示此类行为!
public static void main(String[] args) {
final JFrame jFrame = new JFrame("JLabel, show me your ellipsis!");
jFrame.getContentPane().setLayout(new MigLayout());
jFrame.getContentPane().add(new JLabel("Nope! I just do not know you well enough!"));
jFrame.pack();
jFrame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
我尝试了所有可以想到的布局/组件约束.有没有人知道Mig中是否还有这样的东西?