簡體   English   中英

如何從類到小程序繪制形狀?

[英]How to draw shapes from a class to an applet?

這里是總編程初學者,試圖在學校放假期間學習一些Java。 一直在做簡單的事情,並開始使用GUI查看GUI和繪制形狀。 我主要是關注這里發布的教程和大量答案。

我在將Draw類中的形狀繪制到DrawTest小程序時遇到了麻煩; 如下

import java.awt.*;
import java.applet.*;
import javax.swing.*;

public class DrawTest extends Applet 
{
    Draw circle = new Draw();

public void init()  
    {
Panel mainPanel = new Panel();
mainPanel.setLayout(new GridLayout(0,2)); //a left and right panel

JPanel drawPanel = new JPanel();  //left panel to draw shapes into
drawPanel.setBackground(Color.BLACK);
JLabel headerLabel = new JLabel("Draw shapes from another class");
headerLabel.setForeground(Color.GREEN);
drawPanel.add(headerLabel);

drawPanel.add(circle);
circle.drawing();

JPanel textPanel = new JPanel(); //right panel for text
TextArea output = new TextArea("Circle and oval");
textPanel.add(output);

mainPanel.add(drawPanel);
mainPanel.add(textPanel);
add(mainPanel);
}
}

和Draw類

import java.awt.*;
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.*;

public class Draw extends JPanel 
{

    public void drawing()
    {
    repaint();
    }

    public void paintComponent(Graphics g) 
{
super.paintComponent(g);
g.setColor(Color.BLUE);

// a circle (int x, int y, int width, int height,int startAngle, int arcAngle);

g.fillArc(20,20,50,50,0,360);

//this will draw a oval of width 60 & height 40 at (10,30)
g.setColor(Color.RED);
    g.drawOval(10,30,60,40);        
}
}

在此先感謝您提供任何指導。

首先,您要混合awt和swing組件。 請鍵入JTextArea和JPanel和JApplet而不是TextArea,Applet和Panel。 另外,您可能想要執行以下操作:

JPanel drawPanel = new Draw();

但您的解決方案也應該有效。 再次,我認為您的問題是由於混合awt和swing組件而發生的。

還有circle.drawing(); 這是不必要的,因為面板在初始化時會調用paintComponent()

您遇到了這些問題,因為同時使用了swing和awt組件。 僅使用擺動組件。

使用JApplet代替Applet

使用JPanel代替Panel

使用JTextArea而不是TextArea

還要用JSrollPane包裝JtextAreaJSrollPane所提到的,您不需要drawing()方法。

例如,更改您的init()方法,如下所示:

public void init() {
    JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new GridLayout(0, 2)); // a left and right panel

    JPanel drawPanel = new JPanel(new BorderLayout());
    drawPanel.setBackground(Color.BLACK);
    JLabel headerLabel = new JLabel("Draw shapes from another class");
    headerLabel.setForeground(Color.GREEN);
    drawPanel.add(headerLabel,BorderLayout.EAST);
    circle.setBackground(Color.BLACK);
    drawPanel.add(circle);

    JPanel textPanel = new JPanel(new BorderLayout()); // right panel for text
    JTextArea output = new JTextArea("Circle and oval");
    textPanel.add(new JScrollPane(output));

    mainPanel.add(drawPanel);
    mainPanel.add(textPanel);
    add(mainPanel);
    setSize(600,200);
}

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM