GUI-Komponente in JFrame verdeckt
Wie ein Benutzer beobachtete, verhindert ein Problem im GUI-Code, dass alle Komponenten korrekt angezeigt werden. Insbesondere verdeckt das obere Bedienfeld die anderen Bedienfelder.
Ursache:
Dieses Problem entsteht durch das in JFrame verwendete BorderLayout-Layout. Standardmäßig werden Komponenten, die ohne bestimmte Einschränkungen hinzugefügt wurden, automatisch in der MITTLEREN Position platziert, sodass nur eine Komponente sichtbar ist.
Lösung:
Um dieses Layoutproblem zu beheben , ändern Sie den Code wie folgt:
f.add(top, BorderLayout.PAGE_START); // Add top panel to PAGE_START position f.add(mid); // Add mid panel with default BorderLayout.CENTER constraint f.add(bot, BorderLayout.PAGE_END); // Add bot panel to PAGE_END position
Zusätzliche Optimierungen:
Vervollständigen Sie den optimierten Code:
import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.*; public class EncDecExample implements ActionListener { final static JPanel top = new JPanel(); final static JPanel mid = new JPanel(); final static JPanel bot = new JPanel(); final static JTextField in = new JTextField(10); final static JTextField out = new JTextField(10); final static JButton enc = new JButton("Encrypt"); final static JButton dec = new JButton("Decrypt"); final static JFrame f = new JFrame("Encryption/decryption"); public static void main(String[] args) { f.setSize(500, 500); f.setResizable(false); out.setEditable(false); out.setText("Hello"); top.add(in); mid.add(enc); mid.add(dec); bot.add(out); f.add(top, BorderLayout.PAGE_START); f.add(mid); f.add(bot, BorderLayout.PAGE_END); f.pack(); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == enc && !in.getText().equalsIgnoreCase("")) { out.setText(e(in.getText(), 5)); } else if (e.getSource() == dec && !in.getText().equalsIgnoreCase("")) { out.setText(d(in.getText())); } } }
Das obige ist der detaillierte Inhalt vonWarum werden GUI-Komponenten in einem JFrame mithilfe von BorderLayout verdeckt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!