1

単純な Java のことを理解しようとしているだけです。このことを機能させることはできません。警告 : 不正なコードが多数受信されています。

import java.awt.*;
import java.lang.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import javax.swing.border.LineBorder;


class DrawFrame  {
    public DrawFrame(){
        DrawPanels panelFrame=new DrawPanels();
        JFrame mainFrame=new JFrame();
        mainFrame.setLayout(new GridLayout(1,3));
        mainFrame.setVisible(true);
        mainFrame.setSize(480, 800);
        mainFrame.setTitle("Title");
        mainFrame.setResizable(false);
        mainFrame.add(panelFrame.panel1);
        mainFrame.add(panelFrame.panel2);
        mainFrame.add(panelFrame.panel3);
        //panelFrame.panel1.getGraphics();
        panelFrame.panel1.add(new DrawBlock());
        panelFrame.panel2.add(new DrawBlock());
        panelFrame.panel3.add(new DrawBlock());
        mainFrame.revalidate();
        mainFrame.repaint();
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }
class DrawPanels extends JPanel{
     JPanel panel1=new JPanel();
     JPanel panel2=new JPanel();
     JPanel panel3=new JPanel();
    public DrawPanels(){
        panel1.setBackground(Color.ORANGE);
        panel2.setBackground(Color.BLACK);
        panel3.setBackground(Color.RED);
        panel1.setVisible(true);
        panel2.setVisible(true);
        panel3.setVisible(true);
        panel1.setBorder(new LineBorder(Color.BLACK));
        panel2.setBorder(new LineBorder(Color.BLACK));
        panel3.setBorder(new LineBorder(Color.BLACK));

    }
}

class DrawBlock extends JPanel{

    private static final long serialVersionUID = 1L;
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawRect(1, 1,15,15);
    }
}


public class MainClass {

    /**
     * @param args
     */
    public static void main(String[] args) {


        DrawFrame Windos=new DrawFrame();
    }}

クラス DrawBlock が JPanel を拡張する場合、各 JPanel に小さな白い四角形が表示されますが、paintComponent() メソッドに対する反応はありません。DrawBlock を JComponent に拡張すると、正方形がまったくなくなります。これはおそらく初心者の問題ですが、解決できません。

4

3 に答える 3

0

編集:
削除してみてください

mainFrame.revalidate();

それは の認識されたコマンドではありませんJFrame

さらに @Override アノテーションを paintComponent に追加します。

@Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawRect(1, 1,15,15);
    }

それは私にとって最もうまくいきます。

于 2013-05-07T09:29:39.473 に答える