在我的程序中,我将要求JPanel中的矩形数量,并使用create按钮将它们添加到框架中。我想调用另一个类的矩形。但我看不到我的长方形。当我在我的主类中编写相同的paint方法时,我可以看到矩形,但是当我运行程序时它们会出现。我希望它们与actionlistener一起出现。我究竟做错了什么?这是我的课程;
矩形类:
library(microbenchmark)
library(stringr)
word <- sapply(sample(3:15, 1e6, replace=TRUE), function(nbchar) paste(sample(letters, nbchar, replace=TRUE), collapse=""))
Sotos <- function(word) paste0(' ', word, ' ')
Andre1 <- function(word) sub("(.*)"," \\1 ", word)
Andre2 <- function(word) suppressMessages(paste(message("very easy question"), word, message("very easy question")))
Cath1 <- function(word) paste(NULL, word, NULL)
Cath2 <- function(word) sprintf(" %s ", word)
strpad <- function(word) str_pad(word, width = nchar(word) + 2, side = "both")
microbenchmark(Sotos(word), Andre1(word), Andre2(word), Cath1(word), Cath2(word), strpad(word), unit="relative")
# expr min lq mean median uq max neval cld
# Sotos(word) 1.2071789 1.190558 1.228668 1.190450 1.245905 1.0740482 100 b
# Andre1(word) 2.9069459 2.731446 2.690268 2.711295 2.709019 2.1535507 100 d
# Andre2(word) 0.9999499 1.002723 1.020524 1.000145 1.013569 0.7941186 100 a
# Cath1(word) 1.0000000 1.000000 1.000000 1.000000 1.000000 1.0000000 100 a
# Cath2(word) 1.4430192 1.403617 1.387463 1.402438 1.400566 1.1396474 100 c
# strpad(word) 2.7101283 2.599947 2.789208 2.902455 2.942781 2.0281154 100 e
我的主要JFrame类:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class Rectangle extends JFrame {
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getW() {
return w;
}
public void setW(int w) {
this.w = w;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
public Color getC() {
return c;
}
public void setC(Color c) {
this.c = c;
}
private int x,y,w,h;
private Color c;
private asgn3 a3;
public Rectangle() {
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillRect(getX(), getY(), getW(), getH());
g.setColor(Color.red);
}
}
答案 0 :(得分:0)
当我在我的主要课程中编写相同的绘画方法时
什么涂料方法?你的所有代码都是创建一个Rectangle对象数组。你没有代码可以做任何绘画。
绘画的工作方式是覆盖JPanel的paintComponent()。因此,您需要为您的绘画创建自定义JPanel。然后创建一个Rectangle对象的ArrayList。在paintComponent()方法中,您遍历ArrayList并绘制每个Rectangle。
阅读Custom Painting上Swing教程中的部分,以获取一个简单示例,以帮助您入门。
您还可以查看Custom Painting Approaches中的DrawOnComponent
示例。它演示了如何动态添加要绘制的Rectangle对象。每次要显示另一个Rectangle时,它都使用addRectangle(...)方法。