如何在JPanel中添加图像 [英] how to add Image in JPanel

查看:166
本文介绍了如何在JPanel中添加图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I add a tabbedpane in my frame and call tab.add(" ",new Img()) that extends Img with JPanel ..

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

The question is: Could I add JScrollPane in that JPanel and drawImage as JPanel's background and also to do additional drawing on that image such as making route on background image(such as map) because I want to apply Prim's algorithm on those route...

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

And also if I wish to add additional panel on tabbedpane like above, how could I control those tab actions..

示例代码就像那样...

The sample code is like that...

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

If you have any idea on Prim's algorithm and graph algorithm please help me! Thanks!

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上添加图像

in small lines the image can be added on JPanel like this

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(...)绘制,在执行后默认调用它建构者

In the example above the image is loaded in the constructor of the class and it is then drawn by the paintComponent(...) which is called by default after executing the constuctor

这篇关于如何在JPanel中添加图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆