私のプロジェクトでは、1 つのフレームに 3 つの異なる図を表示する必要があります。私がこれを行うことができると思った方法は、1 つのメイン パネルをフレームに追加し、次に 3 つの他のフレームをメイン フレームに追加することです。1 つ目は特定の場所で塗りつぶされた 4 つの円、2 つ目はグラフ、3 つ目は時計です。現在、私は他の2つに適用できるように、最初の1つを機能させようとしています。プログラムはコンパイルされますが、実行すると空白のウィンドウが表示されます。グラフィックが表示されない原因は何ですか? n00832607 クラスはそのように名前が付けられており、学校のシステムでプロジェクトを提出する際の形式のため小文字になっていますが、無視してください。
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class n00832607 extends JFrame {
private JPanel panelMain;
private FourFans panelfans;
public n00832607() {
//Main Panel
panelMain = new JPanel();
add(panelMain);
//Creating Fans
panelfans = new FourFans();
panelMain.add(panelfans);
}
//Main Method
public static void main(String[] args) {
n00832607 frame = new n00832607();
frame.setVisible(true);
frame.setSize(400, 400);
frame.setTitle("Project 6");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
//n00832607 Class Finish
class FourFans extends JPanel
{
public FourFans()
{
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 2));
panel.add(new Fan());
panel.add(new Fan());
panel.add(new Fan());
panel.add(new Fan());
}
}
//Responsible for creating Fan
class Fan extends JPanel {
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
int height = getHeight();
int width = getWidth();
g.setColor(Color.BLACK);
g.drawOval((int)(0.09 * width), (int)(0.09*height), (int)(0.825 * height), (int) (0.825 * height));
g.fillArc((int)(0.1 * width), (int)(0.1 * height), (int)(0.8 * width), (int)(0.8 * height), 20, 30);
g.fillArc((int)(0.1 * width), (int)(0.1 * height), (int)(0.8 * width), (int)(0.8 * height), 110, 30);
g.fillArc((int)(0.1 * width), (int)(0.1 * height), (int)(0.8 * width), (int)(0.8 * height), 200, 30);
g.fillArc((int)(0.1 * width), (int)(0.1 * height), (int)(0.8 * width), (int)(0.8 * height), 290, 30);
}
}
EDIT 私はあなたが提案したものを手に入れました.今、ファンが現れます.彼らは非常に小さいですが、実際に現れるので、後で対処することができます. これを次の図に適用しようとしましたが、うまくいかないようです。最初の部分は次のようになります
public class n00832607 extends JFrame {
private JPanel panelMain;
private FourFans panelfans;
private SquareFunction panelfunction;
public n00832607() {
//Main Panel
panelMain = new JPanel();
add(panelMain);
//Creating Fans
panelfans = new FourFans();
panelMain.add(panelfans);
//Creating Function
panelfunction = new SquareFunction();
panelMain.add(panelfunction);
}
//Main Method
public static void main(String[] args) {
n00832607 frame = new n00832607();
frame.setSize(400, 400);
frame.setTitle("Project 6");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
これは、私が取り組んでいる SquareFuction のコードです。実行すると、ファンが小さく表示され、SquareFunction が表示される空白がたくさんあります。これがその写真です。
class SquareFunction extends JPanel
{
public SquareFunction()
{
add(new GraphMaker());
}
}
//Responsible for creating the graph
class GraphMaker extends JPanel {
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
double scaleFactor = 0.1;
Polygon p = new Polygon();
int y = 0;
for(int x = -100; x <= 100; x++)
{
if(y < 200 - (int)(scaleFactor * x * x))
{
y = 200 - (int)(scaleFactor * x * x);
}
p.addPoint(x+200,200-(int)(scaleFactor * x * x));
}
g.setColor(Color.BLACK);
g.drawLine(20, y+1, getWidth() - 50, y+1);
g.drawLine(200, 0, 200, y+1);
g.drawString("X", 345, 200);
g.drawString("Y", 200, 9);
g.setColor(Color.BLUE);
g.drawPolygon(p);
g.setColor(Color.WHITE);
g.drawLine(50, 200 - (int)(scaleFactor * 100 * 100), 300, 200 - (int)(scaleFactor * 100 * 100));
}
}