我使用Google搜索,但无法找到正确的答案。我有一个JPanel
,我希望它有一个从上到下的渐变。我只打算使用两种颜色。我怎样才能做到这一点?JPanel渐变背景
回答
在这里你去:
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TestPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
int w = getWidth();
int h = getHeight();
Color color1 = Color.RED;
Color color2 = Color.GREEN;
GradientPaint gp = new GradientPaint(0, 0, color1, 0, h, color2);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
TestPanel panel = new TestPanel();
frame.add(panel);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
+1不错的例子,虽然Id建议覆盖'JPanel'的'getPreferredSize()'并在'JFrame'上调用'pack()'而不是调用'setSize(..)' –
@DavidKroukamp'setSize()'调用是为了在屏幕上显示一些东西。我不想在这种情况下重写'getPreferredSize()',因为我的理解是Panel将在以后实际用于设置LayoutManager并添加组件,因此'getPreferredSize()'应该由该LayoutManager计算并且不是任意大小。无论如何,这只是挑剔,我相信这两种解决方案都是可以接受的。 –
我个人比较喜欢LinearGradientPaint,但它取决于需求;) – MadProgrammer
哎Bebbie您可以使用此:
JPanel contentPane = new JPanel() {
@Override
protected void paintComponent(Graphics grphcs) {
super.paintComponent(grphcs);
Graphics2D g2d = (Graphics2D) grphcs;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(0, 0,
getBackground().brighter().brighter(), 0, getHeight(),
getBackground().darker().darker());
g2d.setPaint(gp);
g2d.fillRect(0, 0, getWidth(), getHeight());
}
};
希望帮助; 你也可以回到这个ARTICAL更多的帮助: Gradient background to any jcomponent
我打电话给这个BS。你很诚实地链接到源代码是很好的。但是,源代码是正确的,并且您以错误的方式修改了它。提示:'JComponent.setOpaque(false);'是一个关键因素,'super.paintComponent(grphcs);'必须是最后一次调用。否则,你的代码将不能用于所有'JComponent'对象,并且对于未来的任何变化它都不是健壮的。但是,感谢指针。 –
- 1. 背景渐变
- 2. 渐变背景
- 3. 渐变背景UIScrollView
- 4. NSOutlineView渐变背景
- 5. 与背景渐变
- 6. Imagemagick背景渐变
- 7. CSS3背景渐变
- 8. Itextsharp渐变背景
- 9. 渐变背景iOS
- 10. Xamarin - 渐变背景
- 11. css渐变背景
- 12. CSS3渐变背景
- 13. 渐变背景上的文字渐变
- 14. Android渐变背景渐变为透明
- 15. 背景渐变+单背景图片
- 16. 如何制作一个JPanel的背景渐变
- 17. CSS背景过渡 - 渐变
- 18. 背景页脚渐变
- 19. 颜色渐变的背景
- 20. PDF的渐变背景
- 21. 渐变背景重复
- 22. jVectormap渐变背景填充
- 23. css背景图像渐变
- 24. CSS过渡背景渐变
- 25. Android LinearLayout渐变背景
- 26. CSS渐变到纯背景
- 27. 渐变颜色背景?
- 28. tabBar中的渐变背景
- 29. R:ggplot背景渐变着色
- 30. gnuplot trasparent渐变背景
http://docs.oracle.com/javase/1.4.2/docs/api/java/ awt/GradientPaint.html – MikeTheLiar
我谷歌搜索“摇摆jpanel背景颜色渐变”,这是第一个链接:http://www.javarichclient.com/how-to-add-a-gradient-background-to-any-jcomponent /似乎有信息 –