इससे पहले कि मैं उस पर होवर करूं दूसरा बटन दिखाई नहीं दे रहा है।
मुझे पता है कि जेपीनेल के लिए इस सवाल पर जवाब दिया गया है, लेकिन वे मेरे लिए काम नहीं कर रहे हैं।
मेरे पास निम्न कोड है:
मुख्य वर्ग
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
Window w = new Window();
});
}
}
मेरी कस्टम विंडो
public class Window implements ActionListener {
JFrame f;
JButton b1, b2;
JRootPane jRootPane;
public Window() {
f = new JFrame("Ceaser Verschluesselung");
f.setPreferredSize(new Dimension(480, 150));
f.setResizable(false);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.setLocation(720, 300);
f.setLayout(null);
jRootPane = f.getRootPane();
b1 = new JButton("Verschlüsseln");
b2 = new JButton("Entschlüsseln");
b1.setSize(new Dimension(220, 100));
b1.setLocation(7, 5);
b1.setFont(new Font("1", Font.BOLD, 25));
b1.addActionListener(this);
b2.setSize(new Dimension(220, 100));
b2.setLocation(237, 5);
b2.setFont(new Font("1", Font.BOLD, 25));
b2.addActionListener(this);
jRootPane.add(b1);
jRootPane.add(b2);
f.pack();
f.setVisible(true);
}
public void setVisibility(boolean b) {
f.setVisible(b);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Verschlüsseln")) {
new Encoder(this);
} else if (e.getActionCommand().equals("Entschlüsseln")) {
new Decoder();
}
}
}
मेरे पास पहले अन्य परियोजनाओं पर यह समस्या थी लेकिन विंडो को चलाने के लिए SwingUtilities.invokeLater()
ने इसे ठीक कर दिया। जेपीनेल के साथ दूसरे धागे पर मुझे पता चला कि बटन गायब होने पर गायब हो जाते हैं लेकिन मैंने इसे और अधिक संकीर्ण बटनों के साथ करने की कोशिश की जो कुछ भी नहीं बदला।
मैं एन्कोडर और डिकोडर कक्षाएं नहीं जोड़ता, मुझे नहीं लगता कि यह तब तक जरूरी है जब तक कोई मुझे गलत साबित न करे: डी
1 उत्तर
पढ़ें रूटपैन्स का उपयोग कैसे करें। आपको RootPane
में घटकों को नहीं जोड़ना चाहिए। इसके बजाय, आपको उन्हें सामग्री फलक में जोड़ना चाहिए:
Container contentPane;
//....
contentPane = f.getContentPane();
पूरी कक्षा:
public class Window implements ActionListener {
JFrame f;
JButton b1, b2;
Container contentPane;
public Window() {
f = new JFrame("Ceaser Verschluesselung");
f.setPreferredSize(new Dimension(480, 150));
f.setResizable(false);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.setLocation(720, 300);
f.setLayout(null);
contentPane = f.getContentPane();
b1 = new JButton("Verschlüsseln");
b2 = new JButton("Entschlüsseln");
b1.setSize(new Dimension(220, 100));
b1.setLocation(7, 5);
b1.setFont(new Font("1", Font.BOLD, 25));
b1.addActionListener(this);
b2.setSize(new Dimension(220, 100));
b2.setLocation(237, 5);
b2.setFont(new Font("1", Font.BOLD, 25));
b2.addActionListener(this);
contentPane.add(b1);
contentPane.add(b2);
f.pack();
f.setVisible(true);
}
public void setVisibility(boolean b) {
f.setVisible(b);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Verschlüsseln")) {
} else if (e.getActionCommand().equals("Entschlüsseln")) {
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new Window());
}
}
साथ ही, setLayout(null)
का उपयोग करना बुरा (बुरा) अभ्यास है। इसके बजाय लेआउट मैनेजर का इस्तेमाल करें। यह आपके जीवन को आसान बना देगा, साथ ही आपका जीयूआई अधिक उपयोगकर्ता के अनुकूल होगा क्योंकि यह आकार बदलने का समर्थन करेगा।
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।