這是我的代碼。對不起,任何格式錯誤。無論如何,當我創建我的JTextField並添加到JFrame中時,我只能看到我的圖像圖標,但我沒有看到它的JTextField。我究竟做錯了什麼?我無法將JTextfield添加到ImageIcon頂部的JFrame上
package com.company;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Main extends JFrame {
public static void main(String[] args) throws IOException {
String path = "C:\\Users\\home\\Pictures\\Papa2.jpg";
File file = new File(path);
BufferedImage image = ImageIO.read(file);
JLabel label = new JLabel(new ImageIcon(image));
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(label);
f.pack();
f.setLocation(200, 200);
f.setVisible(true);
f.setResizable(false);
JTextField text = new JTextField(40);
text.setVisible(true);
f.add(text);
}
}
1)調用'f.setVisible(true)'執行'f.add(text)'後。 2)你不需要'text.setVisible(true)'。 3)更改'contentPane'的佈局管理器或將'f'添加到與BorderLayout.CENTER不同的東西,否則您將只能在下次看到該文本字段。 –
是的LuxxMiner,並加強:默認情況下,JFrame使用BorderLayout,它只顯示在中心的一個組件。創建一個'JPanel',添加標籤和文本字段,然後將JPanel添加到JFrame中。你將不得不嘗試面板的佈局來獲得你想要的位置關係。 – markspace
@markspace但是OP已經改變了'JFrame'的'contentPane',從而改變了將要使用的佈局管理器(它不是默認的'JLabel'沒有佈局管理器) – MadProgrammer