我是Java GUI的新手,並且遇到顯示圖像的問題。我的目的是顯示一個大的圖像,並允許用戶點擊圖像的區域來指示特定位置的位置。無論如何,儘管讀了甲骨文的解釋和其他解決方案,我甚至無法讓圖片出現。顯示圖像,Java
我創建了一個JFrame並使用它的setContentPane()方法來添加一個JPanel和JLabel。我使用JLabel的setIcon()方法來添加一個圖像,或者至少這是我的意圖...
任何意見是讚賞,特別是如果有更好的方式做到這一點。我將使用OpenCV處理圖像,並計劃在顯示它們之前將它們轉換爲Java圖像(或BufferedImage)。
這是代碼。爲了節省空間,我排除了圖書館。
public class Pathology {
public static void main(String[] args) {
PrimaryFrame primaryFrame = new PrimaryFrame();
primaryFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
primaryFrame.setSize(1500, 900);
primaryFrame.setVisible(true);
primaryFrame.setContentPane(primaryFrame.getGui());
try {
primaryFrame.setImage(ImageIO.read(new File("C:\\Users\\Benjamin\\Pictures\\Pathology\\C\\001.png")));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
GUI類:
public class PrimaryFrame extends JFrame{
//private JTextField textField1;
JPanel gui;
JLabel imageCanvas;
public PrimaryFrame() {
super("Pathology-1");
//setLayout(new FlowLayout());
//textField1 = new JTextField("Chup!", 50);
//add(textField1);
}
public void setImage(Image image) {
imageCanvas.setIcon(new ImageIcon(image));
}
public void initComponents() {
if (gui==null) {
gui = new JPanel(new BorderLayout());
gui.setBorder(new EmptyBorder(5,5,5,5));
imageCanvas = new JLabel();
JPanel imageCenter = new JPanel(new GridBagLayout());
imageCenter.add(imageCanvas);
JScrollPane imageScroll = new JScrollPane(imageCenter);
imageScroll.setPreferredSize(new Dimension(300,100));
gui.add(imageScroll, BorderLayout.CENTER);
}
}
public Container getGui() {
initComponents();
return gui;
}
}
謝謝,LuxxMiner。我仍在努力掌握這些基本原理。 – horseatingweeds