我在Photoshop做这个,我打算用它为我的文件共享应用程序:
我想知道是否有可能创建我的应用程序的GUI,是要去有这个外表和感觉。
如果我不能只使用Eclipse或NetBeans中生成它,是否有任何其他工具,可以帮助我?
不仅是可能的,但很容易,你不必全力以赴创建自定义外观的方式。
这是我在20分钟内所做的:
有很多关于如何自定义组件在网络上的信息,而无需创建一个全新的L&F。
了解Swing Architecture有很大帮助。
万一你没有看过的Swing Tutorial在这里。
最后,你需要的文档:Java doc
我同意你的意见!其实你可以使用NetBeans创建这样一个GUI。这是一件容易的事,你有很多的选择与合作!我个人使用的是:
1)创建一个具有绘画软件的图形,并将其设置为图标的组件。我使用的设计过程Inkscape的,但任何软件应该做的伎俩。你必须要在这个过程中preatty小心,becouse你不能在NetBeans调整图像(当然,我从来没有尝试过)。
2)延伸的UI类(例如:公共类CustomButtonUI延伸BasicButtonUI),和覆盖的方法漆,然后使用函数setUI(componentName.setUI(新CustomButtonUI);)
这是一个例子的代码:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.plaf.basic.BasicButtonUI;
/**
*
* @author Ionut Cicio
*/
public class CustomButton extends BasicButtonUI{
int borderThickness, edgeRoundness;
@Override
public void paint(Graphics g, JComponent c) {
Graphics2D g2 = (Graphics2D)g;
g2.setColor(c.getBackground());
borderThickness = 2;
edgeRoundness = 20;
g2.setColor(c.getForeground());
g2.fillRoundRect(0, 0, c.getWidth(), c.getHeight(), edgeRoundness+5, edgeRoundness+5);
g2.drawRoundRect(0, 0, c.getWidth(), c.getHeight(), edgeRoundness+5, edgeRoundness+5);
//g2.fillRect(0, 0, c.getWidth(), c.getHeight());
//g2.drawRect(0, 0, c.getWidth(), c.getHeight());
g2.setColor(c.getBackground());
g2.fillRoundRect(borderThickness, borderThickness, c.getWidth()-(int)(borderThickness*2.5), c.getHeight()-(int)(borderThickness*2.5), edgeRoundness, edgeRoundness);
g2.drawRoundRect(borderThickness, borderThickness, c.getWidth()-(int)(borderThickness*2.5), c.getHeight()-(int)(borderThickness*2.5), edgeRoundness, edgeRoundness);
super.paint(g, c);
}
@Override
protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect, Rectangle textRect, Rectangle iconRect) {
}
}
它总是发生在使用这两种方法一起,和它给你一个非常大的好处的动画工作磨片!
对于某些类型的UI的作为BasicTextFieldUI的,理解绘画的工作原理是preatty棘手,但还是可以理解的。
哦,亲爱的,不,不,不!如果你希望你的用户的眼部流血,然后去了。否则,应遵循什么UI准则适用于您的平台。
要回答你的问题:这是任何现代视窗系统肯定是可行的。
下面是当程序员设计的用户界面是什么一般情况:
(来源:jensroesner.de)
你可以甚至可以动态改变它 - 见Look-n-Feel feature挥杆
这是可能的。但对于大多数Java开发人员,这需要抑制咽反射在这样一个丑陋的界面。
这里有一个Java interface我使用不超过六其它工具写道。我没有设计它,我只是把艺术家设计,握着我的鼻子,并付诸实施。
至于细节,我建议做尽可能多的样子,并通过可插拔的外观感觉和摇摆的感觉。此外,使用布局管理,而不是让事情在不断的位置不变的尺寸,这样的事情可以增大和缩小到不同的屏幕分辨率,也因此,如果您翻译的东西,你就不会最终不得不调整所有的文字标签,然后一切洗牌其他各地。
创建新的LaF实在是太多了。由于所有的Jbutton将是不同的,只是使用JButton.setIcon()
和JButton.setPressedIcon()
和使用您的图像。剩下的就是加载背景和使用奇怪的字体。使用Font.createFont()
加载自定义字体。你可能得自己绘制的JProgressBar。覆盖JProgressBar.paintComponent(Graphics g)
并得出自己的形象。
那么这就是非常可能的,虽然很多了Java Swing开发者可能无法与图像中的UI同意。也许这是正确的。
虽然使它很有可能试图寻找JWindow
,JTable
,ImageIcon
,Dimension
,JProgressBar
。您还需要足够的理解为Java布局和事件,如MouseEvents
,ActionEvents
。
希望帮助。
你必须创建大量的定制JComponents的。除此之外,可能的。
它使用Swing是很有可能的。