我想写一个接受数组和其他东西的泛型方法.每种都可以是任何类型,但它们必须是相同的.我尝试了这个,但我仍然可以在方法中输入任何内容.
public static <T> boolean arrayContains(T[] array, T object){
return Arrays.asList(array).contains(object);
}
Run Code Online (Sandbox Code Playgroud)
我可以调用这个方法,arrayContains(new String[]{"stuff"}, new Pig())但我只想接受它arrayContains(new String[]{"stuff"}, "more stuff")
我有一个 JLabel,我已为其设置了自定义字体“BP Diet”。如果我将其添加到 JFrame,文本显示正常,但一旦我将 JFrame 的布局更改为 FlowLayout,文本的顶部就会被切断。当您将 JLabel 添加到 JPanel 并将其添加到 JFrame 时,也会出现同样的问题。我可以在http://www.hichris.com/more/files/BPdiet.otf找到该字体
下面是代码:
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.net.URL;
public class FontSizeTest {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel(
"AaBbCcDdEeFfGgHhIiJjKk");
label.setFont(createFont());
frame.add(label);
frame.pack();
frame.setMinimumSize(frame.getMinimumSize());
frame.setVisible(true);
}
static Font createFont() {
Font customFont = null;
try {
URL url = new URL("http://www.hichris.com/more/files/BPdiet.otf");
InputStream is = url.openStream();
customFont = Font.createFont(Font.TRUETYPE_FONT, is);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(customFont); …Run Code Online (Sandbox Code Playgroud) 当我绘制一个字符串时g.drawString(),生成的文本小于设置的字体.如果您运行以下代码,您可以看到显示所需的字体大小,然后在调用之前repaint()我尝试过的第二个线程调用时显示较小的字体,但这没有帮助.有任何想法吗?SwingUtilities.invokeLater()repaint
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test {
static JPanel panel;
public static void main(String[] args) {
JFrame frame = new JFrame();
panel = new JPanel() {
private static final long serialVersionUID = 1L;
public void paint(Graphics g) {
g.clearRect(0, 0, panel.getWidth(), panel.getHeight());
g.drawString("TEST", 20, 100);// Where I draw the string
}
};
panel.setFont(new Font("Arial", Font.BOLD, 30));// The desired font
frame.add(panel);
frame.setSize(500, 500);
frame.setVisible(true);
new Thread() {// This thread …Run Code Online (Sandbox Code Playgroud) 我有一个保存的 ProGuard 东西,在里面,我有这行:
-libraryjars /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar
Run Code Online (Sandbox Code Playgroud)
我在 Linux 和 Windows 上都使用这个配置文件。我有一个便携式硬盘驱动器,上面有这个文件和我得到的参考库,我可以使用../lib/aLibrary.jar. 有没有办法可以在两个平台上获取 rt.jar 的位置,这样我就不必更改 jar 的路径?
当我创建一个JTree并调用时setRootVisible(false),我看不到小树打开图标,我仍然可以双击节点来展开它但是在第一级看不到它们.有任何想法吗?