2017-04-11 16 views
0

私は合計での容器を持っています。私は生成するpng画像を追加したい、あるいはJPanel(imagePan)のボタン(充電器画像)の助けを借りてバッファーに入れたいと思います。JPanelにあるJPanelに画像を追加するにはどうすればいいですか?

これまでのほとんどの例は、Swingチュートリアルどのように適切にパネルに画像を追加する326X254

  • で発生ImageIcon

    1. イメージを使用していますか?ここで

    あなたは、コードは以下のウィンドウを生成見つける:

    import java.awt.BorderLayout; 
        import java.awt.Dimension; 
        import java.awt.GridLayout; 
        import java.io.IOException; 
        import java.io.OutputStream; 
        import java.io.PrintStream; 
    
        import javax.swing.BorderFactory; 
        import javax.swing.Box; 
        import javax.swing.BoxLayout; 
        import javax.swing.ImageIcon; 
        import javax.swing.JButton; 
        import javax.swing.JFrame; 
        import javax.swing.JLabel; 
        import javax.swing.JPanel; 
        import javax.swing.JTextArea; 
        import javax.swing.SwingUtilities; 
        import javax.swing.border.Border; 
    
        public class View { 
        private JFrame frame; 
        private JPanel globalPan, firstHorisontalPan, secondhorisontalPan, 
        calibrationPan, imagePan, manipPan, solutionPan; // susp 
        private JButton raproche, ecarter, sauvgarder, demarrer, stop, charger; 
        private BorderLayout BorderGlobalePan, BorderSecondPane, BorderManipPane, 
        BorderFirstHorisontalPan, BorderResolPan, BorderCalibPan, 
        BorderChargerPan; 
        private JTextArea console; 
        private Box calibrationBox, solutionBox; 
    
    
        public void init() { 
        // declaration de JFrame 
        frame = new JFrame("Rubi's Cube IHM"); 
    
        // JPanle 
        globalPan = new JPanel(); 
        firstHorisontalPan = new JPanel(); 
        secondhorisontalPan = new JPanel(); 
        imagePan = new JPanel(); 
        manipPan = new JPanel(); 
        calibrationPan = new JPanel(); 
        solutionPan = new JPanel(); 
    
        // 
        calibrationBox = Box.createVerticalBox(); 
        solutionBox = Box.createVerticalBox(); 
    
        // borderLayout 
        BorderGlobalePan = new BorderLayout(); 
        BorderSecondPane = new BorderLayout(); 
        BorderManipPane = new BorderLayout(); 
        BorderFirstHorisontalPan = new BorderLayout(); 
        BorderResolPan = new BorderLayout(); 
        BorderCalibPan =new BorderLayout(); 
        BorderChargerPan = new BorderLayout(); 
    
        // JButton 
        raproche = new JButton("raprocher"); 
        ecarter = new JButton("ecarter"); 
        sauvgarder = new JButton("sauvgarder"); 
        demarrer = new JButton("demarrer"); 
        stop = new JButton("stop"); 
        charger = new JButton("charger image"); 
    
        console = new JTextArea(); 
    
        //add JPanel names 
        firstHorisontalPan.setBorder(BorderFactory.createTitledBorder("Etat")); 
        calibrationPan.setBorder(BorderFactory.createTitledBorder("calibration")); 
        solutionPan.setBorder(BorderFactory.createTitledBorder("résolution & manipulation")); 
        imagePan.setBorder(BorderFactory.createTitledBorder("visualisation")); 
    
        // definition of JButton size 
        raproche.setPreferredSize(new Dimension(200, 30)); 
        ecarter.setPreferredSize(new Dimension(200, 30)); 
        sauvgarder.setPreferredSize(new Dimension(200, 30)); 
        demarrer.setPreferredSize(new Dimension(200, 30)); 
        stop.setPreferredSize(new Dimension(200, 30)); 
        charger.setPreferredSize(new Dimension(200, 30)); 
    
        //definition of JPanel size 
        globalPan.setPreferredSize(new Dimension(1024, 600)); 
        firstHorisontalPan.setPreferredSize(new Dimension(1024, 130)); 
        secondhorisontalPan.setPreferredSize(new Dimension(1024, 480)); 
        imagePan.setPreferredSize(new Dimension(850, 480)); 
        manipPan.setPreferredSize(new Dimension(150, 480)); 
        calibrationPan.setPreferredSize(new Dimension(200, 200)); 
        solutionPan.setPreferredSize(new Dimension(200, 100)); 
    
        calibrationBox.setPreferredSize(new Dimension(200, 200)); 
        solutionBox.setPreferredSize(new Dimension(200, 100)); 
    
        firstHorisontalPan.setLayout(BorderFirstHorisontalPan); 
        firstHorisontalPan.add(console); 
        //image 
    
    
    
        // JPane calibration 
        calibrationBox.add(Box.createVerticalStrut(10)); 
        calibrationBox.add(raproche); 
        calibrationBox.add(Box.createVerticalStrut(10)); 
        calibrationBox.add(ecarter); 
        calibrationBox.add(Box.createVerticalStrut(10)); 
        calibrationBox.add(sauvgarder); 
    
        calibrationPan.setLayout(BorderCalibPan); 
        calibrationPan.add(calibrationBox, BorderLayout.CENTER); 
    
        // JPane resolution & manipulation 
        solutionBox.add(Box.createVerticalStrut(10)); 
        solutionBox.add(demarrer); 
        solutionBox.add(Box.createVerticalStrut(10)); 
        solutionBox.add(stop); 
    
        solutionPan.setLayout(BorderResolPan); 
        solutionPan.add(solutionBox, BorderLayout.CENTER); 
    
    
        //JPane ManipPane 
        manipPan.setLayout(BorderManipPane); 
        manipPan.add(calibrationPan, BorderLayout.NORTH); 
        BorderManipPane.setVgap(20); 
        manipPan.add(solutionPan, BorderLayout.CENTER); 
    
        //JPane secondPane 
        secondhorisontalPan.setLayout(BorderSecondPane); 
        secondhorisontalPan.add(manipPan, BorderLayout.WEST); 
        BorderSecondPane.setHgap(7); 
        secondhorisontalPan.add(imagePan, BorderLayout.CENTER); 
    
        //JPane GlobalHorisontalPane 
        globalPan.setLayout(BorderGlobalePan); 
        globalPan.add(firstHorisontalPan, BorderLayout.NORTH); 
        BorderGlobalePan.setVgap(10); 
        globalPan.add(secondhorisontalPan, BorderLayout.CENTER); 
    
        //Jpane imagePan 
        BorderChargerPan.setVgap(10); 
        imagePan.add(charger); 
    
        // window 
        frame.add(globalPan); 
        frame.setSize(1024, 600); 
        frame.setLocationRelativeTo(null); 
        frame.setVisible(true); 
        frame.setTitle("cubeBerry"); 
        frame.setResizable(true); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
    

    IHM

  • 答えて

    3

    proprelyのJPanelに画像を追加する方法は?

    1. ImageIconを作成します。
    2. アイコンをJLabelに追加します。
    3. JPanelにラベルを追加します。

    詳細および使用例については、How to Use IconsのSwingチュートリアルのセクションを参照してください。

    また、投稿されたコードから、setPreferredSize()ステートメントをすべて削除してください。レイアウトマネージャは、コンポーネントの推奨サイズを決定します。 Swingはレイアウトマネージャで使用するように設計されています。レイアウトマネージャにその仕事をさせてください。ザ・サイズは5行30列でなければなりません提案します

    console = new JTextArea(5, 30); 
    

    console = new JTextArea(); 
    

    JTextAreaの作成のような何かをします。レイアウトマネージャは、この情報に基づいて推奨サイズを計算できます。

    private BorderLayout BorderGlobalePan, BorderSecondPane, BorderManipPane, ... 
    

    変数名は大文字で始めるべきではありません。あなたの変数のほとんどは正しいが、すべてではない。一貫してください!

    frame.setSize(1024, 600); 
    

    サイズをハードコードしないでください。あなたは私のコンピュータの解像度が何であるか分かりません。代わりにpack()メソッドを使用して、レイアウトマネージャーに自分の仕事を任せてください。

    関連する問題