मैं googled लेकिन कोई सही जवाब नहीं मिल सका। मेरे पास 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 अच्छा उदाहरण है, हालांकि आईडी 'जेपीनेल' के 'getPreferredSize()' को ओवरराइड करने और 'सेट आकार (..)' –
@DavidKroukamp 'setSize()' कॉल को कॉल करने के बजाय 'JFrame' पर 'पैक()' को कॉल करने का सुझाव देता है स्क्रीन पर कुछ दिखने के लिए है। मैं इस मामले में 'getPreferredSize() 'को ओवरराइड नहीं करना चाहता क्योंकि मेरी समझ यह है कि पैनल को बाद में वास्तव में लेआउटमैनेजर सेट करने और घटकों को जोड़ने के लिए उपयोग किया जाएगा, इसलिए' getPreferredSize()' को उस लेआउटमैनेजर द्वारा गणना की जानी चाहिए और एक मनमाना आकार नहीं है। वैसे भी, यह सिर्फ नाइटपिकिंग है और मेरा मानना है कि दोनों समाधान समान रूप से स्वीकार्य हैं। –
मैं व्यक्तिगत रूप से 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());
}
};
आशा व्यक्त की कि मदद; आप कर सकते हैं भी वापस अधिक मदद के लिए इस लेख को: Gradient background to any jcomponent
जानकारी है, मैं इस पर बीएस को कॉल करता हूं। यह अच्छा है कि आप स्रोत से जुड़ने के लिए पर्याप्त ईमानदार हैं। हालांकि, स्रोत में यह सही है, और आपने इसे गलत तरीके से संशोधित किया है। संकेत: 'JComponent.setOpaque (झूठा); 'एक महत्वपूर्ण कारक है और' super.paintComponent (grphcs); 'अंतिम कॉल होना आवश्यक है। अन्यथा, आपका कोड सभी 'JComponent' ऑब्जेक्ट्स के साथ काम नहीं करेगा और यह भविष्य में हुए किसी भी बदलाव के बारे में भी मजबूत नहीं होगा। लेकिन सूचक के लिए धन्यवाद। –
http://docs.oracle.com/javase/1.4.2/docs/api/java/ awt/GradientPaint.html – MikeTheLiar
मैं "स्विंग jpanel पृष्ठभूमि रंग ढाल" के लिए googled और यह पहला लिंक है: http://www.javarichclient.com/how-to-add-a-gradient-background-to-any-jcomponent/लगता है कि –