Java - 覆盖 >variable< 中的paint(Graphics g) 方法
Posted
技术标签:
【中文标题】Java - 覆盖 >variable< 中的paint(Graphics g) 方法【英文标题】:Java - override paint(Graphics g) Method from >variable< 【发布时间】:2015-06-21 17:48:21 【问题描述】:我的班级中有一个Canvas
变量。如何从Canvas
覆盖paint()
方法?我知道您可以创建一个单独的类并扩展 Canvas
,但在这种情况下,我想保留我的变量。
//This is the method i am looking for
public void paint(Graphics g)
super.paint(g)
这是我的课:
private JFrame frame;
private Canvas canvas;
public SimpleSkinCreator()
canvas = new Canvas();
canvas.setPreferredSize(new Dimension(WIDTH, HEIGHT));
canvas.setBackground(Color.black);
canvas.setFocusable(true);
canvas.requestFocus();
frame = new JFrame("AvarionDE's - SimpleSkinEditor");
frame.add(canvas);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
【问题讨论】:
【参考方案1】:首先,避免在 Swing GUI 中使用 Canvas 和 AWT 组件,而是使用 JPanel 并覆盖它的paintComponent。如果需要,您可以通过以下方式轻松完成此操作:
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.*;
public class OverridePaintComponent extends JPanel
private static final int PREF_W = 400;
private static final int PREF_H = PREF_W;
public OverridePaintComponent()
// TODO add junk to GUI
@Override
protected void paintComponent(Graphics g)
super.paintComponent(g);
// draw here
@Override
public Dimension getPreferredSize()
if (isPreferredSizeSet())
return super.getPreferredSize();
return new Dimension(PREF_W, PREF_H);
private static void createAndShowGui()
JFrame frame = new JFrame("OverridePaintComponent");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new OverridePaintComponent());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
public static void main(String[] args)
SwingUtilities.invokeLater(new Runnable()
public void run()
createAndShowGui();
);
【讨论】:
【参考方案2】:你可以使用匿名类:
canvas = new Canvas()
@Override
public void paint()
super.paint();
// your code here
;
你确定这是你想做的吗?我建议使用 Swing 和 Swing API,而不是直接修改 paint()
,除非你知道自己在做什么。
【讨论】:
以上是关于Java - 覆盖 >variable< 中的paint(Graphics g) 方法的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLException: Unknown system variable 'query_cache_size'
解决问题:java.sql.SQLException: Unknown system variable 'tx_isolation'
Java environment variables setting on Linux