我在使用java中的方法时,更改我创建的钻石的颜色时遇到问题。我不知道如何通过使用方法来继承或更正它。我只是希望它成为面向对象的,我不知道如何正确地做到这一点。请帮助我。
package Trial;
import javax.swing.*;
import java.awt.*;
public class ColorRed extends JApplet {
public GradientPaint gradientPaint;
public void paint(Graphics g){
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
GradientPaint black = new GradientPaint(50,20,Color.BLACK,50,50,Color.BLACK);
blackDiamond(g2,black);
GradientPaint yellowOrange = new GradientPaint(50,20,Color.YELLOW,50,50,Color.RED);
redDiamond(g2,yellowOrange);
}
public void blackDiamond(Graphics2D g2,GradientPaint gradientPaint){
int a [] = {100,50,100,150,100};
int b [] = {10,60,110,60,10};
setGradientPaint(gradientPaint);
g2.setPaint(getGradientPaint());
fillPolygon(a,b,5,g2);
}
public void redDiamond(Graphics2D g2,GradientPaint gradientPaint){
int a2 [] = {100,60,100,140,100};
int b2 [] = {20,60,100,60,20};
setGradientPaint(gradientPaint);
g2.setPaint(getGradientPaint());
fillPolygon(a2,b2,5,g2);
}
public void fillPolygon(int a [], int b [] ,int c,Graphics2D g2){
getGraphics().fillPolygon(a,b,c);
}
public GradientPaint getGradientPaint() {
return gradientPaint;
}
public void setGradientPaint(GradientPaint gradientPaint) {
this.gradientPaint = gradientPaint;
}
}
这是我尝试创建的面向对象的代码,但它不继承渐变颜料的颜色。
这是我的代码的结果
此代码尚未创建多个方法
import javax.swing.*;
import java.awt.*;
public class ColorRed extends JApplet {
public GradientPaint gradientPaint;
public void paint(Graphics g){
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
int a [] = {100,50,100,150,100};
int b [] = {10,60,110,60,10};
g.fillPolygon(a,b,5);
GradientPaint red = new GradientPaint(50,10,Color.RED,10,70,Color.ORANGE);
g2.setPaint(red);
int a2 [] = {100,60,100,140,100};
int b2 [] = {20,60,100,60,20};
g.fillPolygon(a2,b2,5);
}
}
这是我想要的结果:enter image description here
我只想更正它以便组织起来,这样就不会在paint方法中声明所有局部变量,而只想用不同的方法将其分开,问题是颜色不会改变。请帮助我,非常感谢。 :)
也许像这样组织它,以便于更改颜色:
package Trial;
import javax.swing.*;
import java.awt.*;
public class ColorRed extends JApplet {
private GradientPaint black;
private GradientPaint yellowOrange;
public void init() {
setBlack(new GradientPaint(50,20,Color.BLACK,50,50,Color.BLACK));
setYellowOrange(GradientPaint(50,20,Color.YELLOW,50,50,Color.RED));
}
public setBlack(GradientPaint black) {
this.black = black;
}
public setYellowOrange(GradientPaint yellowOrange) {
this.yellowOrange = yellowOrange;
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
blackDiamond(g2,black);
redDiamond(g2,yellowOrange);
}
public void blackDiamond(Graphics2D g2,GradientPaint gradientPaint){
int a [] = {100,50,100,150,100};
int b [] = {10,60,110,60,10};
g2.setPaint(gradientPaint);
fillPolygon(a,b,5,g2);
}
public void redDiamond(Graphics2D g2,GradientPaint gradientPaint){
int a2 [] = {100,60,100,140,100};
int b2 [] = {20,60,100,60,20};
g2.setPaint(gradientPaint);
fillPolygon(a2,b2,5,g2);
}
public void fillPolygon(int a [], int b [] ,int c,Graphics2D g2){
g2.fillPolygon(a,b,c);
}
}
很遗憾,我没有找到在线挥杆赛跑者进行测试。
我修改了Adder's答案(按公告方式工作),因此它无需使用JApplet(也被标记为已弃用)就可以使用。我在其他地方添加了一些评论。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ColorRed extends JPanel {
private GradientPaint black;
private GradientPaint yellowOrange;
JFrame frame = new JFrame();
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new ColorRed().init());
}
public void init() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// set the panel size
setPreferredSize(new Dimension(500, 500));
// add panel to frame.
frame.add(this);
// adjust frame and subcomponents
frame.pack();
// center on screen
frame.setLocationRelativeTo(null);
frame.setVisible(true);
setBlack(new GradientPaint(50, 20, Color.BLACK, 50, 50, Color.BLACK));
setYellowOrange(new GradientPaint(50, 20, Color.YELLOW, 50, 50, Color.RED));
}
public void setBlack(GradientPaint black) {
this.black = black;
}
public void setYellowOrange(GradientPaint yellowOrange) {
this.yellowOrange = yellowOrange;
}
// use paintComponent(g) and not paint(g)
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
blackDiamond(g2, black);
redDiamond(g2, yellowOrange);
}
public void blackDiamond(Graphics2D g2, GradientPaint gradientPaint) {
int a[] = { 100, 50, 100, 150, 100
};
int b[] = { 10, 60, 110, 60, 10
};
g2.setPaint(gradientPaint);
fillPolygon(a, b, 5, g2);
}
public void redDiamond(Graphics2D g2, GradientPaint gradientPaint) {
int a2[] = { 100, 60, 100, 140, 100
};
int b2[] = { 20, 60, 100, 60, 20
};
g2.setPaint(gradientPaint);
fillPolygon(a2, b2, 5, g2);
}
public void fillPolygon(int a[], int b[], int c, Graphics2D g2) {
g2.fillPolygon(a, b, c);
}
}