gpt4 book ai didi

Java - 图形 - 在 JPanel 上添加另一个形状

转载 作者:行者123 更新时间:2023-11-29 07:08:30 25 4
gpt4 key购买 nike

我有一个制作 JFrame 并在其上添加面板的类
第二个扩展了 JPanel 并在其上绘制

第一个(JFrame)

class MyWindow {

void qwe() {
JFrame frame = new JFrame("qwe");
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

MyPanel panel = new MyPanel();
panel.setLayout(null);
frame.add(panel);}}

和第二个(JPanel)

class MyPanel extends JPanel {

public void paintComponent(Graphics g) {
g.drawRect(50,50,90,70);
}

public void addShape() {
Graphics g = this.getGraphics();

Graphics2D gg = (Graphics2D) g;

gg.drawString("qwe",20,20);}}

如何使用 addShape() 方法在 JPanel 上添加一个字符串?

最佳答案

作为@camickr 观点的具体示例,请注意 MyPanel 已经覆盖了 paintComponent(),因此您可以传递对 Graphics 的引用> addShape() 的上下文。此外,

  • 一定要调用super.paintComponent(g)

  • 覆盖 getPreferredSize() 以建立组件的首选大小。

  • Swing GUI 对象应该event dispatch thread 上构造和操作.

image

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyWindow {

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new MyWindow().qwe();
}
});
}

void qwe() {
JFrame frame = new JFrame("qwe");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyPanel panel = new MyPanel();
panel.setLayout(null);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

private static class MyPanel extends JPanel {

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(50, 50, 90, 70);
addShape(g);
}

public void addShape(Graphics g) {
g.drawString("qwe", 20, 20);
}

@Override
public Dimension getPreferredSize() {
return new Dimension(300, 200);
}
}
}

关于Java - 图形 - 在 JPanel 上添加另一个形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16861463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com