阅读背景:

小弟有问题,一是JFrame.pack(),二是g.DrawStrintg()的

来源:互联网 
为什么这段里的a.pack()是有就不显示"khkhuyuy“呢?非得用a.setSize(300,300)!
2.为什么我的g.setColor(Color.red);字符就是不变色呢?
谢谢!

import java.awt.*;
import javax.swing.*;

public class Demo extends JFrame
{
public Demo()
{
getContentPane().add(new Draw());

}
public static void main(String[] args)
{
Demo a=new Demo();
//a.pack();
a.setSize(300,300);
a.setVisible(true);
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

 class Draw extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponents(g);
g.drawString("khkhuyuy",10,20);
g.setColor(Color.red);
}
}

7 个解决方案

#1


pack只能根据容器中的控件来最小化(紧凑模式)容器

你的画图内容pack是无法知道的

这种情况下,用一个画布控件吧

#2


楼上说的很对,我来说你的第二个问题的吧.
你在new 一个demo的时候,它可能调用了自己的paintComponent方法,所以你设置的颜色看不到,其实它是有的.只是它很快你感受不到它的变化.

#3


哦,但我的Draw继承了JPanel,不也是个控件吗?
第二个问题,我还是不明白,我从载了paintCoponent,怎么样能让字符变色呢?

#4


把g.drawString("khkhuyuy",10,20);
g.setColor(Color.red);
两句换个位置

#5


道理就不用说了吧

#6


JPanel是容器组件。应该是要用不能分割的控件。

#7


收到,谢谢了

分享到: