java - 如何从类中绘制形状到小程序?

标签 java swing applet draw shapes

这里是完全编程初学者,试图在学校假期学习一些 Java。一直在制作简单的东西,并开始研究 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);        
}
}

提前感谢您的指点。

最佳答案

您遇到这个问题是因为您同时使用了 swing 和 awt 组件。仅使用 swing 组件。

使用JApplet而不是Applet

使用JPanel而不是Panel

使用JTextArea而不是TextArea

还用 JSrollPane 包装 JtextArea,正如 dehlen 提到的,您不需要 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);
}

enter image description here

关于java - 如何从类中绘制形状到小程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677821/

相关文章:

java - fragment -E/RecyclerView : No adapter attached; skipping layout

java - 有什么方法可以像谷歌或雅虎那样实时获取股票报价吗?

java - 为数组按钮上的按钮设置 onclickListener 的最佳实践

java - Applet 应用程序因安全原因被阻止

java - 多类小程序

java - 如何在 Netbeans 7 中使用 jGoodies 表单布局

java - 如何在 JEditorPane 中单击 <a> 标签时更改页面?

java - 重复 SwingWorker

java - 我如何从另一个类(class)获得类(class)的值(value)

小程序中的 java.lang.reflect.invokingtargetexception 错误