我可以在 Jpanel 上使用图形 g 绘画吗?如果可以的话,它是如何工作的?
JPanel Game = new JPanel();
Game.setLayout(null);
Game.setLocation(0,0);
Game.setSize(500,700);
Game.setBackground(Color.WHITE);
Game.setBorder(BorderFactory.createLineBorder(Color.black));
如何在此 Jpanel 上添加油漆组件
是的,对于自定义绘画,您必须对JPanel
进行子类化,然后您必须覆盖第一行super.paintComponent(..)
中的调用paintComponent
。
例:
JPanel game = new JPanel(){
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
//custom painting here
}
};
//game.setLayout(null); don't use null layout
game.setLocation(0,0);
game.setSize(500,700);
game.setBackground(Color.WHITE);
game.setBorder(BorderFactory.createLineBorder(Color.black));
阅读更多 AWT 和 Swing 中的绘画 |在 Swing 中执行自定义绘画
注意:在 java 变量的名称中,按照惯例,以小写字母开头,遵循驼峰样式。所以Game
应该game
.
如果你想在一个组件上实现你自己的自定义绘画,你必须创建你自己的类来扩展该组件。您将从类似的东西开始
public class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
//Add your custom painting here
}
}
然后,您可以将该面板与类似内容一起使用
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
System.out.println("Created GUI on EDT? " + SwingUtilities.isEventDispatchThread());
JFrame f = new JFrame("Demo");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new MyPanel());
f.pack();
f.setVisible(true);
}