使用Java中的另一个类从主界面绘制到GUI



我是一个初级程序员,所以我不知道所有的词汇,但我了解一些java的基础知识。

所以我试图用另一个类从主界面绘制GUI。我知道我不是很具体,但这是我的代码,我将尝试解释我要做的事情。

这是我的主

    import javax.swing.*;
    import java.awt.*;
public class ThisMain {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    JFrame theGUI = new JFrame();
    theGUI.setTitle("GUI Program");
    theGUI.setSize(600, 400);
    theGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    ColorPanel panel = new ColorPanel(Color.white);
    Container pane = theGUI.getContentPane();
    pane.add(panel);
    theGUI.setVisible(true);

    }
}

这是另一个类

import javax.swing.*;
import java.awt.*;
public class ColorPanel extends JPanel {
    public ColorPanel(Color backColor){
    setBackground(backColor);
}
public void paintComponent(Graphics g){
    super.paintComponent(g);
}
}

我想用

这行
 ColorPanel panel = new ColorPanel(Color.white);

或者类似的东西比如

 drawRect();

,并在GUI中绘制。

这是我使用的代码,我认为最接近工作

import javax.swing.*;
import java.awt.*;
public class ThisMain {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame theGUI = new JFrame();
        theGUI.setTitle("GUI Program");
        theGUI.setSize(600, 400);
        theGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        //I'm trying to draw a string in the JFrame using ColorPanel but i'm            Trying to do it from the main
        ColorPanel panel = new ColorPanel(){
            public void paintComponent(Graphics g){
                super.paintComponent(g);
                //This is the line I need to work using the ColorPanel in anyway
                g.drawString("Hello world!", 20, 20);
        };
        Container pane = theGUI.getContentPane();
        //The errors occur here
        pane.add(panel);
        theGUI.setVisible(true);

    //and on these brackets
    }
}

我不太确定你到底想做什么(你还没有回复我对你的问题的评论来澄清),但我想:

  • 给ColorPanel一个List<Shape>
  • 给它一个public void addShape(Shape s)方法,允许外部类插入形状到这个列表,然后调用repaint()
  • 在ColorPanel的paintComponent方法中,遍历List,使用Graphics2D对象绘制每个Shape项。

注意Shape是一个接口,所以你的List可以容纳Ellipse2D对象,Rectangle2D对象,Line2D对象,Path2D对象,以及实现该接口的所有其他对象。此外,如果您想将每个Shape与颜色关联起来,您可以将项目存储在Map<Shape, Color>中。

无法编译的原因是:

ColorPanel panel = new ColorPanel(Color.white);

,因为类ColorPanel不包含在swing库中,所以您必须对其进行编码。这段代码扩展了JPanel,并包含一个接受Color参数的构造函数。构造函数在实例化面板并设置其背景颜色时运行:

import javax.swing.*;
import java.awt.*;
public class ColorPanel extends JPanel {
   public ColorPanel(Color backColor) {
    setBackground(backColor);
  }
}

相关内容

  • 没有找到相关文章

最新更新