如何/可以重写来自非继承类的方法?其次,有没有比“非继承类”更好的术语?
我有一个“扩展”JFrame的类,需要从JPanel重写paintComponent。怎么做?或者它可以扩展JPanel,并需要访问方法,如setTitle()、setResizable()和setDefaultCloseOperation();
public class Chess extends JPanel {
boolean du, dd, dl, dr;
double x, y;
public class AL extends KeyAdapter {
public void keyPressed(KeyEvent e) {
int keyC = e.getKeyCode();
switch(keyC) {
case KeyEvent.VK_LEFT:
dl = true;
break;
case KeyEvent.VK_RIGHT:
dr = true;
break;
case KeyEvent.VK_DOWN:
dd = true;
break;
case KeyEvent.VK_UP:
du = true;
break;
}
}
public void keyReleased(KeyEvent e) {
int keyC = e.getKeyCode();
switch(keyC) {
case KeyEvent.VK_LEFT:
dl = false;
break;
case KeyEvent.VK_RIGHT:
dr = false;
break;
case KeyEvent.VK_DOWN:
dd = false;
break;
case KeyEvent.VK_UP:
du = false;
break;
}
}
}
public void Chess() {
JFrame frame = new JFrame();
frame.addKeyListener(new AL());
frame.setTitle("Chess");
frame.setSize(500, 500);
frame.setResizable(false);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
du = dl = dd = dr = false;
x = y = 150;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.CYAN);
double i = .25;
if (du) {
y -= i;
}
if (dr) {
x += i;
}
if (dd) {
y += i;
}
if (dl) {
x -= i;
}
if (x < 0) {
x = 0;
}
if (x > getWidth() - 25) {
x = getWidth() - 25;
}
if (y < 25) {
y = 25;
}
if (y > getHeight() - 25) {
y = getHeight() - 25;
}
g.drawOval( (int) x, (int) y, 25, 25);
repaint();
}
public static void main(String[] args) {
new Chess();
}
}
例如,这里有一个简单的类,它在鼠标单击时显示鼠标位置:
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
@SuppressWarnings("serial")
public class MousePosition extends JPanel {
private static final int PREF_W = 600;
private static final int PREF_H = PREF_W;
// format String for display String
protected static final String FORMAT = "(%d, %d)";
private int xPos = -40;
private int yPos = -40;
private String displayText = "";
public MousePosition() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
xPos = e.getX();
yPos = e.getY();
// use FORMAT String to create our display text
displayText = String.format(FORMAT, xPos, yPos);
repaint();
}
});
}
@Override
public Dimension getPreferredSize() {
if (isPreferredSizeSet()) {
return super.getPreferredSize();
}
return new Dimension(PREF_W, PREF_H);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString(displayText, xPos, yPos);
}
private static void createAndShowGui() {
MousePosition mainPanel = new MousePosition();
JFrame frame = new JFrame("MousePosition");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
关于
按照上面的示例,在创建了JFrame实例之后,可以简单地调用这些方法。
问题内容: 我有两个课,和。它们看起来像这样: 此错误指向Field的: 我希望首先调用Background init ()。要将“ a,b”传递给Fields的 init (),Field会分配a和b,然后将其中包含三个0的列表分配给field。然后让Background的 init ()继续,然后调用它自己的buildField()并用包含c的列表覆盖self.field。 似乎我还没有完全理
我正在编写一个带有对象的游戏,我想根据它的类使用不同的命令。我有一个超级类“项目”,一个子类“工具扩展项目”和“锤子扩展工具”。在项目超类(抽象)中,我有一个抽象方法“doCommand”,我在工具中覆盖了它。这很好用,我现在在工具中有一个有效的“doCommand”。但是当我想在 Hammer 中覆盖这个“doCommand”时,它只是使用工具的“doCommand”。 这来自调用方法的类的一部
问题内容: 我想创建一个只能接受某些类型的列表。因此,我试图从Python中的列表继承,并像这样覆盖append()方法: 这将导致无限循环,因为append()的主体会自行调用,但是除了使用self.append(item)外,我不确定该做什么。 我应该怎么做呢? 问题答案: 我对你的课做了一些改动。这似乎正在工作。 一些建议:不要用作关键字-是内置函数。使用前缀访问Python实例变量。所以用
“编写一个名为clsWorker的超类和子类clsHourlyWorker和clssalariedworker。每个工人都有一个名字和一个工资率。编写计算每个员工周薪的方法computePay(int hours)。小时工按实际工作小时数获得小时工资,如果小时数最多为40小时。如果小时工工作超过40小时,则按时间半支付超出部分。受薪工人得到40小时的小时工资,无论实际小时数是多少。为继承编写一个测
我创建了一个(个人、学生、员工、教职员工)类。Person必须将Student和Employee分为子类。Employee有两个子类:教员和职员。我已经完成了所有的编码,他们工作得很好,除了我的驱动程序类TestPerson程序给出了编译错误 注:一个测试程序,创建一个人、学生、员工、教职员工,并调用他们的toString方法。 驱动程序类TestPerson的错误。以下是java:- **我只是
当JUnit5 explain@Test时,文档https://junit.org/junit5/docs/current/user-guide/#writing-他说 这些方法是继承的,除非它们被重写 这句话是什么意思?我没有看到任何与方法继承相关的东西