用Graphics时颜色出现问题

mdzlkj 2008-03-01 03:29:01
this.jPanel1.getGraphics().setColor(new Color(255,255,255));
System.out.println(this.jPanel1.getGraphics().getColor());
为什么还是输出为0 0 0
...全文
501 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdzlkj 2008-03-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 insiku 的回复:]
你getGraphics 得到的只是个副本

System.err.println(panel.getGraphics() == panel.getGraphics());
[/Quote]

package untitled3;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Frame1 extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JButton jButton1 = new JButton();

public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}

/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(400, 300));
setTitle("Frame Title");
jPanel1.setPreferredSize(new Dimension(10, 50));
jButton1.setText("jButton1");
jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
contentPane.add(jPanel1, java.awt.BorderLayout.SOUTH);
jPanel1.add(jButton1);
contentPane.add(jPanel2, java.awt.BorderLayout.CENTER);
}

public void setColorAndDrawGraphics(Graphics g) {
g.setColor(Color.WHITE); //可以改变颜色,因为是引用传参
g.drawLine(0, 0, 100, 100); //颜色有改变
}

public void jButton1_actionPerformed(ActionEvent e) {
setColorAndDrawGraphics(jPanel2.getGraphics());
// jPanel2.getGraphics().setColor(Color.WHITE);//改变了也没改变(因为是副本)
jPanel2.getGraphics().drawLine(100, 100, 200, 200); //颜色无改变
}
}


class Frame1_jButton1_actionAdapter implements ActionListener {
private Frame1 adaptee;
Frame1_jButton1_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}


可以了,谢谢您的提醒,让我琢磨了,原来是逻辑问题,让我更了解Java了,哈哈 这问题搞了我好久时间!
mdzlkj 2008-03-08
  • 打赏
  • 举报
回复
下午预演了 这个问题还没解决 着急呀
insiku 2008-03-08
  • 打赏
  • 举报
回复
你getGraphics 得到的只是个副本

System.err.println(panel.getGraphics() == panel.getGraphics());
mdzlkj 2008-03-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lvzhu18 的回复:]
要是设置panel的颜色,可以用setBackground(new Color(255, 255, 255));
[/Quote]
我没说要设置他的背景颜色
我是要设置画线上下文的颜色
lvzhu18 2008-03-06
  • 打赏
  • 举报
回复
要是设置panel的颜色,可以用setBackground(new Color(255, 255, 255));
mdzlkj 2008-03-06
  • 打赏
  • 举报
回复
太伤心了 都问了几天了都没几个回答
Graphics 为什么都设置了颜色都画不出颜色出来呀

怎么都是黑色

在JPanel JLabel JButton 都是这样子


为什么没人回答我呀

非常急呀 两天后要交项目了

我主要是做统计的
mdzlkj 2008-03-05
  • 打赏
  • 举报
回复
再次顶起提问
monky_d_luffy 2008-03-04
  • 打赏
  • 举报
回复
代码完整点的说!!!
mdzlkj 2008-03-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 monky_d_luffy 的回复:]
代码完整点的说!!!
[/Quote]
你就随便搞个jPanel写上面的代码就发现问题了
mdzlkj 2008-03-03
  • 打赏
  • 举报
回复
有那么难吗?怎么没人回答?
mdzlkj 2008-03-03
  • 打赏
  • 举报
回复
顶起来,怎么没人回答呀
mdzlkj 2008-03-02
  • 打赏
  • 举报
回复
没人回答

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧