1

.form によって作成されたサブパネルを描画したいと思います。1 つの「mainPanel」があり、これには panel1(上)、panel2(左下)、および panel3(右下) という名前の 3 つのサブパネルが含まれます。

今、サブパネル「panel1」に何かを描きたいのですが、うまくいきません。プログラムを実行すると、3 つのサブパネルのみが表示されますが、「paintComponent()」メソッドの描画は表示されません。

ここにコードを貼り付けました。何が問題なのかを確認するのを手伝ってもらえますか? どうもありがとう。

public class PanelDrawTest extends JFrame {
    private JPanel mainPanel;
    private JPanel panel1;
    private JPanel panel2;
    private JPanel panel3;

    public PanelDrawTest(){
       getContentPane().add(mainPanel);
       setPanel1(new MyPanel1());
    }

    public JPanel getMainPanel() {
       return mainPanel;
    }

    public JPanel getPanel1() {
       return panel1;
    }

    public void setPanel1(JPanel panel1) {
       this.panel1 = panel1;

    }

    private class MyPanel1 extends JPanel {

       public MyPanel1(){

       }
       @Override
       public void paintComponent(Graphics g){
           g.drawString("This is Panel 1",20,20);
           g.drawRect(0,200,100,200);

       }
    }

    public static void main(String args[]){
        SwingUtilities.invokeLater(new Runnable() {
           @Override
           public void run() {
               createAndShowGUI();
           }
        });
    }

    private static void createAndShowGUI() {
        PanelDrawTest frame = new PanelDrawTest();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(50, 50, 1200, 700);
        frame.setPreferredSize(new Dimension(1200,800));
        frame.pack();
        frame.setVisible(true);
    }

 }
4

2 に答える 2

1

あなたのバージョンは私には実行できませんでしたが、これは機能します:

public class PanelDrawTest extends JFrame {
  private JPanel mainPanel = new JPanel(); // I added a constructor to avoid NullPointerexception
  private JPanel panel1;
  private JPanel panel2;
  private JPanel panel3;

  public PanelDrawTest(){
    getContentPane().add(mainPanel);
    setPanel1(new MyPanel1());
    add(panel1); // and I added the panel
  }

  public JPanel getMainPanel() {
     return mainPanel;
  }

  public JPanel getPanel1() {
    return panel1;
  }

  public void setPanel1(JPanel panel1) {
    this.panel1 = panel1;

  }

  private class MyPanel1 extends JPanel {

    public MyPanel1(){

    }
    @Override
    public void paintComponent(Graphics g){
      g.drawString("This is Panel 1",20,20);
      g.drawRect(0,200,100,200);

    }
  }

  public static void main(String args[]){
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        createAndShowGUI();
      }
    });
  }

  private static void createAndShowGUI() {
    PanelDrawTest frame = new PanelDrawTest();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(50, 50, 1200, 700);
    frame.setPreferredSize(new Dimension(1200,800));
    frame.pack();
    frame.setVisible(true);
  }
}
于 2013-07-17T11:56:17.160 に答える