単純な 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 に拡張すると、正方形がまったくなくなります。これはおそらく初心者の問題ですが、解決できません。