我正在使用平台外观和在Linux上我的JTextArea非常易读但在Windows上它使用"Monospaced 9"并且文本非常小.
为什么以及解决这个问题的最佳方法是什么?
为什么默认的Windows外观在JTextArea中使用这么小的字体?
从Java 1.7升级到Java 1.8后,我遇到了摆动边框的一些问题:
在我的所有按钮上,我需要一个坚实的背景颜色和一个实心边框,所以我通过UIManager定义了它.在Java 1.7和以前的版本中,一切看起来都不错,但在Java 1.8上,边框都搞砸了.此外,RadioButton看起来非常奇怪和锯齿状.CheckBoxes似乎也有问题.
为了演示,我创建了一个包含几个组件的简短示例:
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.UIManager;
public class CompDemo extends JFrame
{
public CompDemo()
{
setLayout(new FlowLayout());
add(new JButton("button"));
add(new JTextField("txt"));
add(new JComboBox<String>());
add(new JRadioButton("radio"));
add(new JToggleButton("toggle"));
add(new JCheckBox("check"));
pack();
setVisible(true);
}
public static void main(String[] args)
{
UIManager.put("Button.background", Color.LIGHT_GRAY);
UIManager.put("Button.border", BorderFactory.createCompoundBorder(BorderFactory
.createLineBorder(Color.RED), BorderFactory.createLineBorder(Color.CYAN)));
new CompDemo();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到具有不同JDK版本的输出(扩展到200%而没有抗锯齿):第一个是Java 7u60并显示一切正确.在第二张图片上,我圈出了差异.第三个是使用Java 8u11,你可以看到边框非常混乱(下拉箭头看起来也很奇怪).
我在红色LineBorder中使用了青色LineBorder,因此您可以更清楚地看到问题.
我的操作系统是Windows 8 x64,如果重要的话.
任何人都可以告诉我为什么在Java 8上看起来如此不同?我错过了什么,或者他们是否真的搞乱了Java …
我有5个用于工程的java系统,其UI是使用Swing开发的.
大约10年前,我们开始开发这些系统,每个系统都有大约300K行代码.所有这些系统都处于生产环境中.
关于这些系统的用户界面困扰我们的一个问题是,与手机,平板电脑和网站的大型可用UI相比,它们看起来很旧.
手机,平板电脑和网站UI有什么共同之处?它们的外观基于扁平设计理念.
因此,我们正在开展一项研究,寻找低成本替代方案,为我们的系统提供面向平面设计的现代外观.
我们想到的第一个选项是搜索基于平面设计概念实现的java L&F.但我们没有找到一个.
有没有人知道是否有基于Java的外观和感觉,特别是平面设计概念?
最好的问候,Cláudio.
现代UI正在开始为移动时的UI元素提供良好的惯性.选项卡滑入,页面转换,甚至一些列表框和滚动元素都有很好的惯性(例如iphone).对此最好的理论是什么?它们加速时不仅仅是重力,而且随着它们的到位而减速.我已经尝试了各种公式来加速到最大(终端)速度然后放慢速度,但我没有尝试"感觉"正确.总觉得有点不对劲.是否有这样的标准,或者只是在看起来/感觉正确之前玩各种数字?
当我的应用程序在Mac上运行时,我试图从使用JFileChooser切换到FileDialog,以便它将使用OS X文件选择器.到目前为止,我有以下代码:
FileDialog fd = new FileDialog(this);
fd.setDirectory(_projectsBaseDir.getPath());
fd.setLocation(50,50);
fd.setFile(?);
fd.setVisible(true);
File selectedFile = new File(fd.getFile());
Run Code Online (Sandbox Code Playgroud)
我会为这个问题投入什么?所以我的文件选择器将允许任何目录作为文件选择器的输入(后面的方法已经检查以确保该目录是我想让FileDialog接受任何目录的正确类型的目录).
我正在尝试生成JFileChooser具有Windows外观的内容.我找不到一个方法来改变它,所以我创建了一个扩展的基类,JFileChooser用以下代码更改UI:
public FileChooser(){
this(null);
}
public FileChooser(String path){
super(path);
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Run Code Online (Sandbox Code Playgroud)
然后,在另一节课中,我打电话
FileChooser chooser = new FileChooser(fileName);
int val = chooser.showOpenDialog(null);
Run Code Online (Sandbox Code Playgroud)
但是出现的对话框具有Java外观.有关如何改变这一点的任何想法?是否有一个JFileChooser类的方法,我可以使用它而不是这个扩展类?
谢谢!
根据我的发现,Nimbus外观在Java 6 Update 10中引入.
我有项目,我使用的外观和感觉.
是否有任何情况,用户拥有比6更新10更新的Java VM(例如6更新26)并且Nimbus外观不可用?例如,如果可以手动/显式删除外观和感觉,可能会出现这种情况,但我无法确定是否可以这样做.
基本上,100%保证,如果用户拥有正确的Java VM版本,Nimbus外观将在100%的时间内可用吗?
先感谢您.
我有点困惑在哪里把这个:
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch(Exception e){
}
Run Code Online (Sandbox Code Playgroud)
我没有扩展JFrame课程,但使用了JFrame f = new JFrame();
谢谢:D
我基本上试图模仿默认的Windows XP简单计算器.当我在Java中更改按钮的背景颜色时,它们看起来非常平坦且"无聊".我想让按钮看起来尽可能接近Windows XP计算器中的按钮.
这是一个比较我和WinXp的图像:

是否有某种方法我可以用来改变按钮的样式,就像你在Visual Basic中可以做的那样,使按钮几乎弹出更多或看起来像Windows Xp计算器的3D.
Java中的默认按钮是我正在寻找的类型,除了没有白色,渐变中有更多蓝色的颜色.
这是可能的,还是我被困在按钮上?
我在Windows机器上使用Netbeans,会发生的情况是,如果我运行主java文件,我得到的外观与我运行整个程序的情况不同.这意味着如果我这样做:

我明白了

但是,如果我这样做

我明白了 
您是否看到了两个java输出的外观和感觉上的差异?为什么会这样?我希望当我将它导出到Jar时它应该像第一种情况一样打开,看起来很漂亮的按钮.怎么样?
更新1: 我在main的开头找到了以下代码:
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(FormTTS.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(FormTTS.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(FormTTS.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FormTTS.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//Some code here...
}
Run Code Online (Sandbox Code Playgroud)
所以它应该设置灵气的外观和感觉,但问题是当我打开罐子时,Nimbus的外观和感觉不存在
更新2:我的导航器外观

更新3:文件结构

look-and-feel ×10
java ×9
swing ×7
calculator ×1
filedialog ×1
jbutton ×1
jfilechooser ×1
jframe ×1
jtextarea ×1
macos ×1
netbeans ×1
nimbus ×1
uimanager ×1