1

AnaPencere.java

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;

public class AnaPencere {
    JFrame anaPencere;
    BufferedImage bImageLEFT;
    BufferedImage bImageRIGHT;
    public static void main(String[] args){
        AnaPencere apencere = new AnaPencere();
    }

    public AnaPencere() {
            anaPencere = new JFrame("Main Window");
            anaPencere.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            anaPencere.setSize(613, 253);
            anaPencere.setLocationRelativeTo(null);
            anaPencere.setVisible(true);
            anaPencere.add(new left());
            anaPencere.add(new right());

    }

    private class left extends JPanel{
        private left() {
            this.setBounds(0, 0, 313, 253);
            this.setFocusable(true);
            bImageLEFT = new BufferedImage(313, 253, BufferedImage.TYPE_INT_ARGB);
            paintComponent(bImageLEFT.createGraphics());
        }

        public void paintComponent(Graphics g){
            Graphics2D g2 = (Graphics2D)g;
            g2.drawString(">  LEFT  <", Font.BOLD, 13);
        }
    }

    private class right extends JPanel{
        private right() {
            this.setBounds(313, 0, 300, 253);
            this.setFocusable(true);
            bImageRIGHT = new BufferedImage(313, 253, BufferedImage.TYPE_INT_ARGB);
            paintComponent(bImageRIGHT.createGraphics());
        }

        public void paintComponent(Graphics g){
            Graphics2D g2 = (Graphics2D)g;
            g2.drawString(">  RIGHT  <", Font.BOLD, 13);
        }
    }
}

(jpanelsの座標を左右のクラスに設定します)コードを実行すると、> LEFT <テキストのみが表示され、 >RIGHT<テキストは表示されません。この問題を解決するにはどうすればよいですか?

私の悪い英語のために申し訳ありません。

4

1 に答える 1

2

ここで、コードに変更を加えました。そして、関係する場所にコメントを入れてください。それを見てください:

ここに画像の説明を入力してください

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;

public class AnaPencere {
    JFrame anaPencere;
    BufferedImage bImageLEFT;
    BufferedImage bImageRIGHT;
    public static void main(String[] args){
        AnaPencere apencere = new AnaPencere();
    }

    public AnaPencere() {
            anaPencere = new JFrame("Main Window");
            anaPencere.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            anaPencere.setSize(613, 253);
            anaPencere.setLocationRelativeTo(null);
            JPanel pLeft = new left();
            JPanel pRight = new right();
            anaPencere.getContentPane().add(pLeft,BorderLayout.WEST);
            anaPencere.getContentPane().add(pRight,BorderLayout.EAST);
            anaPencere.setVisible(true);//Set visible true after all components are added
    }

    private class left extends JPanel{
        private left() {
            //this.setBounds(0, 0, 313, 253);//Don't set Bounds. Use Layouts provided by Swing API
            setPreferredSize(new Dimension(150,200));//Set the preferredSize
            this.setFocusable(true);
            bImageLEFT = new BufferedImage(313, 253, BufferedImage.TYPE_INT_ARGB);
            //paintComponent(bImageLEFT.createGraphics());// No need to call it explicitly. Swing will do it for itself.
        }

   public void paintComponent(Graphics g){
        super.paintComponent(g);//call the paintComponent method of JPanel class
        Graphics2D g2 = (Graphics2D)g;
        g2.setFont(new Font(g.getFont().getName(),Font.BOLD,13));//set Font in this way
        g2.drawString(">  LEFT  <", 10, 20);//10 is x coordinate , 20 is y cordinate
    }
    }

    private class right extends JPanel{
        private right() {
            //this.setBounds(313, 0, 300, 253);/Don't set Bounds. Use Layouts provided by Swing API
            setPreferredSize(new Dimension(150,200));//Set the preferredSize
            this.setFocusable(true);
            bImageRIGHT = new BufferedImage(313, 253, BufferedImage.TYPE_INT_ARGB);
           // paintComponent(bImageRIGHT.createGraphics());//No need to call it explicitly. It is called by swing components itself.
        }

        public void paintComponent(Graphics g){
             super.paintComponent(g);//call the paintComponent method of JPanel class
            Graphics2D g2 = (Graphics2D)g;
            g2.setFont(new Font(g.getFont().getName(),Font.BOLD,13));//set Font in this way
            g2.drawString(">  RIGHT  <", 10, 20);//10 is x coordinate , 20 is y cordinate
        }
    }
}
于 2013-03-27T14:01:25.967 に答える