我是一个初级程序员,所以我不知道所有的词汇,但我了解一些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);
}
}