我是初学程序员,所以我不知道所有的词汇,但我了解java的一些基础知识。
所以我试图使用另一个类从main中绘制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
}
}
答案 0 :(得分:2)
我不确定你到底想要做什么(你还没有回复我对你的问题的评论澄清),但我会:
List<Shape>
public void addShape(Shape s)
方法,允许外部类将形状插入此List,然后调用repaint()
请注意,Shape是一个接口,因此List可以容纳Ellipse2D对象,Rectangle2D对象,Line2D对象,Path2D对象以及实现该接口的大量其他对象。此外,如果您想将每个Shape与颜色相关联,则可以将项目存储在Map<Shape, Color>
中。
答案 1 :(得分:0)
您无法编译的原因是由以下行引起的:
ColorPanel面板= 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);
}
}