Rumah >Java >javaTutorial >Mengapa komponen Swing saya tersembunyi di sebalik imej latar belakang, dan bagaimana saya boleh membetulkannya?
Komponen Tidak Kelihatan dengan Imej Latar Belakang
Dalam kod yang disediakan, komponen tidak kelihatan kerana imej latar belakang menindikannya. Untuk membetulkannya, JPanel harus ditambah untuk mengandungi komponen dan menetapkan kedudukannya di hadapan imej.
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; public class Login implements ActionListener { JTextField gusername; JTextField gpassword; static String username; static String password; void logini() throws IOException { JFrame window = new JFrame("Login"); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setSize(300, 250); window.setResizable(false); window.setVisible(true); JPanel mainp = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); window.add(mainp); BufferedImage myPicture = ImageIO.read(new File("c:\bgd.png")); JLabel picLabel = new JLabel(new ImageIcon(myPicture)); picLabel.setPreferredSize(new Dimension(300, 250)); mainp.add(picLabel, c); JPanel componentPanel = new JPanel(); componentPanel.setOpaque(false); c.gridx = 0; c.gridy = 1; mainp.add(componentPanel, c); c.gridx = 0; c.gridy = 1; gusername = new JTextField(); gusername.setText("Username"); componentPanel.add(gusername); c.gridx = 0; c.gridy = 2; gpassword = new JTextField(); gpassword.setText("password "); componentPanel.add(gpassword); c.gridx = 0; c.gridy = 3; JButton login = new JButton("Login"); componentPanel.add(login); login.addActionListener(this); login.setActionCommand("ok"); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equalsIgnoreCase("ok")) { try { this.username = (gusername.getText()); this.password = (gpassword.getText()); System.out.println("0"); } catch (NumberFormatException ex) { System.out.println("ERROR: Could not preform function: 7424"); } } } }
Dalam kod yang dikemas kini, JPanel bernama componentPanel dibuat dan ditambahkan pada panel utama. Panel ini mengandungi medan input dan butang log masuk. Ia ditetapkan menjadi legap untuk membolehkan imej latar belakang dipaparkan. Kedudukan componentPanel ditetapkan di hadapan imej menggunakan c.gridy = 1, memastikan komponen kelihatan di atas imej latar belakang.
Atas ialah kandungan terperinci Mengapa komponen Swing saya tersembunyi di sebalik imej latar belakang, dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!