如何在JPanel中添加图像

我在我的框架中添加了一个tabbedpane并调用了tab.add(“”,new Img()),它使用JPanel扩展了Img ..

问题是:我可以在JPanel和drawImage中添加JScrollPane作为JPanel的背景,还可以在该图像上进行额外的绘制,例如在背景图像上制作路线(例如地图),因为我想在这些路线上应用Prim算法…

如果我想在tabbedpane上添加额外的面板,如上所述,我怎么能控制这些标签操作..

示例代码就像……

如果您对Prim的算法和图算法有任何想法,请帮助我! 谢谢!

public class MainFrame extends JFrame { private JMenuBar menuBar = new JMenuBar(); private JMenu menuFile = new JMenu(); private JMenuItem menuFileExit = new JMenuItem(); private JPanel jPanel1 = new JPanel(); private JLabel lbl1=new JLabel(); private JLabel lbl2=new JLabel(); private JPanel jPanel2 = new JPanel(); private JTabbedPane jTabbedPane1 = new JTabbedPane(); private JPanel originalgraph = new JPanel(); private JPanel zebuthiri = new JPanel(); private JPanel dekhinathiri = new JPanel(); private JPanel oattayathiri = new JPanel(); private JPanel pobbathiri = new JPanel(); private JPanel zeyathiri = new JPanel(); int weight[][] = null; public MainFrame(int [][]w) { this.weight=w; try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.setJMenuBar( menuBar ); this.getContentPane().setLayout(null); Toolkit tk=getToolkit(); Dimension size=tk.getScreenSize(); this.setSize( new Dimension(size) ); this.getContentPane().setBackground(Color.CYAN); menuFile.setText( "File" ); menuFileExit.setText( "Exit" ); menuFileExit.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ae ) { fileExit_ActionPerformed( ae ); } } ); jPanel1.setBounds(new Rectangle(0, 0, 1365, 160)); jPanel1.setLayout(null); lbl1.setBounds(new Rectangle(0, 0, 1365, 160)); lbl1.setIcon(new ImageIcon("5.jpg")); lbl2.setIcon(new ImageIcon("b.jpg")); jPanel2.setBounds(new Rectangle(0, 630, 1365, 160)); lbl2.setBounds(new Rectangle(0, 0, 1365, 160)); jPanel2.setLayout(null); jTabbedPane1.setBounds(new Rectangle(0, 160, 1365, 470)); menuFile.add( menuFileExit ); menuBar.add( menuFile ); jPanel1.add(lbl1); jPanel2.add(lbl2); jTabbedPane1.addTab("Zebu Thiri",new zebuthiri(weight)); jTabbedPane1.addTab("Original Graph",new originalgraph(weight)); jTabbedPane1.addTab("Dekhina Thiri",new dekhinathiri(weight)); jTabbedPane1.addTab("Oattaya Thiri",new oattayathiri(weight)); jTabbedPane1.addTab("Pobba Thiri",new pobbathiri(weight)); jTabbedPane1.addTab("Zeya Thiri",new zeyathiri(weight)); this.getContentPane().add(jTabbedPane1, null); this.getContentPane().add(jPanel2, null); this.getContentPane().add(jPanel1, null); } void fileExit_ActionPerformed(ActionEvent e) { System.exit(0); } public static void main(String args[]){ int w[][]=new int [100][100]; MainFrame f=new MainFrame(w); f.setVisible(true); f.pack(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } 

请阅读如何将图像添加到JPanel?

在小行中,图像可以像这样添加到JPanel上

 public class ImagePanel extends JPanel{ private BufferedImage image; public ImagePanel() { try { image = ImageIO.read(new File("image name and path")); } catch (IOException ex) { // handle exception... } } @Override public void paintComponent(Graphics g) { g.drawImage(image, 0, 0, null); // see javadoc for more info on the parameters } } 

在上面的例子中,图像被加载到类的构造函数中,然后由paintComponent(...)绘制,在执行构造函数时默认调用它。