javapanel根据内部组件_java-在另一个组件内部绘制组件

我有一个任务是显示带有菜单按钮以更改其颜色和背景颜色的“眼睛”.接下来为它们设置动画.但是目前,我坚持绘画,在JFrame中创建了一个包含绘制了眼睛和按钮的面板的JPanel.按钮已正确渲染,但未显示我的眼睛画布.我尝试将paint更改为paintComponent,以不同的方式设置contentPane,但仍然没有任何效果.

import java.awt.*;

import javax.swing.*;

public class Main extends JFrame {

public static void main(String[] args) {

final JFrame frame = new JFrame("Eyes");

frame.setPreferredSize(new Dimension(600, 450));

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel players = new JPanel(new GridLayout(1, 3));

players.add(new JButton("Eyes color"));

players.add(new JButton("Eye pupil"));

players.add(new JButton("Background color"));

JPanel eyes = new JPanel();

Eyes e = new Eyes();

eyes.add(e);

eyes.setPreferredSize(new Dimension(600, 400));

JPanel content = new JPanel();

content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));

frame.setContentPane(content);

content.add(players);

content.add(eyes);

// frame.getContentPane().add(content);

frame.pack();

frame.setVisible(true);

}

}

class Eyes extends JPanel {

public Eyes(){

}

public void paint(Graphics g) {

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g;

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

BasicStroke bs = new BasicStroke(3.0f);

g2d.setBackground(Color.green);

g2d.setStroke(bs);

g2d.setColor(Color.yellow);

g2d.fillOval(50, 150, 200, 200);

g2d.fillOval( 350, 150, 200, 200);

g2d.setColor(Color.BLACK);

g2d.drawOval(49, 149, 201, 201);

g2d.drawOval(349, 149, 201, 201);

g2d.fillOval(125, 225, 50, 50);

g2d.fillOval(425, 225, 50, 50);

}

}

当我尝试直接在JFrame中绘画它时,除了没有设置背景之外,它几乎可以完美地工作.为什么setBackgroundColor不会以任何方式影响我的绘图?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值