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'对象,并且对于未来的任何变化它都不是健壮的。但是,感谢指针。 –
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 /似乎有信息 –