निम्न उदाहरण में, मैं एक कस्टम JComponent
हरे रंग की पृष्ठभूमि पर तैयार किया जा रहा है, लेकिन यह नहीं दिखता है। ऐसा क्यों होता है?कस्टम जेकंपोनेंट में पृष्ठभूमि कैसे काम करें?
public class Test_Background {
public static class JEllipse extends JComponent {
private final Ellipse2D ellipse;
public JEllipse(int width, int height) {
ellipse = new Ellipse2D.Double(0, 0, width, height);
setOpaque(true);
setBackground(Color.GREEN);
}
@Override
public Dimension getPreferredSize() {
return new Dimension((int) ellipse.getBounds().getMaxX(),
(int) ellipse.getBounds().getMaxY());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
((Graphics2D) g).draw(ellipse);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JEllipse e = new JEllipse(400, 300);
JFrame f = new JFrame("Background Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(e);
f.pack();
f.setVisible(true);
}
});
}
}
+1 यह सही और संक्षिप्त है, लेकिन सुजान 'Graphics2D.draw()' को कॉल करने से पहले रंग सेट करना भूल गया है। इस प्रकार रंग अप्रत्याशित होगा। और चूंकि वह JComponent अपारदर्शी होने की घोषणा की है, वह करना होगा * * रंग पृष्ठभूमि खुद या एक घटक, JPanel की तरह है, जो ऐसा नहीं करता है से विस्तार। – Enwired