【发布时间】:2013-01-13 16:17:54
【问题描述】:
我有三个课程 - TableApp/Diner/TablePanel。 我不太明白图形类是如何工作的。我需要从我的 main 方法向我的paintComponent 发送一个 Graphics 对象引用,但我不确定如何将它链接在一起。任何关于如何如此有帮助的解释!
TableApp 类
import javax.swing.*;
public class TableApp{
public static void main(String[]args){
JFrame frame = new JFrame();
TablePanel table = new TablePanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(500,500); //I dont understand how to send my paintComponent a reference of a Graphics object
}
}
TablePanel 类
import java.awt.*;
import javax.swing.*;
public class TablePanel extends JPanel{
Diner diner1,diner2,diner3,diner4,diner5,diner6;
public TablePanel(){
diner1 = new Diner(50,50,300,1,"Murray",Color.blue);
diner2 = new Diner(50,50,300,1,"Murray",Color.blue);//will change once program runs
diner3 = new Diner(50,50,300,1,"Murray",Color.blue);
diner4 = new Diner(50,50,300,1,"Murray",Color.blue);
diner5 = new Diner(50,50,300,1,"Murray",Color.blue);
diner6 = new Diner(50,50,300,1,"Murray",Color.blue);
setPreferredSize(new Dimension(300,200));
setBackground(Color.white);
}
public void paintComponent(Graphics g){//need call from main
super.paintComponent(g);
diner1.draw(g);
diner2.draw(g);
diner3.draw(g);
diner4.draw(g);
diner5.draw(g);
diner6.draw(g);
}
}
晚餐班
import java.awt.*;
import javax.swing.*;
public class Diner{
private int X,Y,diameter=50,seatNumber;
private String name;
private Color colour;
public Diner(int x,int y,int d,int sN,String n,Color col){//construct
X=x;
Y=y;
name=n;
diameter=d;
name=n;
colour=col;
}
public void draw(Graphics g){
g.setColor(Color.blue);
g.fillOval(X,Y,diameter,diameter);
}
}
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2) 暂时忘记你想要做什么,你想要实现什么?我的意思是,它对最终用户来说是什么“功能”。您想为用户提供什么功能?
-
你自己不要调用
paintComponent(),Swing会在组件需要渲染的时候调用。 -
“需要向我的paintComponent 发送一个Graphics 对象引用” 为什么?
paintComponent将由负责创建/维护有效图形上下文的重绘引擎代表您调用。一旦添加到容器中,Diner将被自动绘制... -
@MadProgrammer - 这是一个课堂实验室。实验室说明说“设置一个将 Graphics 对象作为参数的paintComponent 方法”。我不明白如何在不向该方法发送参考的情况下绘制图像。当程序运行时,会弹出一个空的 java 窗口。我的 main 不应该调用至少一种外部方法吗?
-
@Quigg15405 为什么要编辑您的帖子以删除 SSCCE?
标签: java swing graphics jpanel paintcomponent