JDialog Dialog क्लास का एक सबक्लास है और इसमें विंडो के ऊपरी दाएं कोने पर मिनिमाइज़ और मैक्सिमाइज़ बटन नहीं होते। दो प्रकार के डायलॉग बॉक्स होते हैं: मोडल और नॉन-मोडल। डायलॉग बॉक्स के लिए डिफ़ॉल्ट लेआउट BorderLayout है।
नीचे दिए गए प्रोग्राम में, हम AlphaContainer क्लास को कस्टमाइज़ करके और paintComponent() मेथड को ओवरराइड करके एक पारदर्शी JDialog लागू कर सकते हैं।
उदाहरण
import java.awt.*; import javax.swing.*;
public class TransparentDialog {
public static void main (String[] args) {
JDialog dialog = new JDialog();
dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dialog.getRootPane().setOpaque(false);
dialog.setUndecorated(true);
dialog.setBackground(new Color (0, 0, 0, 0));
JPanel panel = new JPanel(new BorderLayout ());
panel.setBackground(new Color (0, 0, 0, 64));
dialog.add(new AlphaContainer(panel));
JSlider slider = new JSlider();
slider.setBackground(new Color(255, 0, 0, 32));
panel.add (new AlphaContainer(slider), BorderLayout.NORTH);
JButton button = new JButton("लेबल टेक्स्ट");
button.setContentAreaFilled(false);
panel.add(button, BorderLayout.SOUTH);
dialog.setSize(400, 300);
dialog.setLocationRelativeTo(null);
dialog.setVisible(true);
}
}
class AlphaContainer extends JComponent {
private JComponent component;
public AlphaContainer(JComponent component){
this.component = component;
setLayout(new BorderLayout());
setOpaque(false);
component.setOpaque(false);
add(component);
}
@Override
public void paintComponent(Graphics g) {
g.setColor(component.getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
}
}
आउटपुट
