为什么这段里的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);
}
}
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是无法知道的
这种情况下,用一个画布控件吧
你的画图内容pack是无法知道的
这种情况下,用一个画布控件吧
#2
楼上说的很对,我来说你的第二个问题的吧.
你在new 一个demo的时候,它可能调用了自己的paintComponent方法,所以你设置的颜色看不到,其实它是有的.只是它很快你感受不到它的变化.
你在new 一个demo的时候,它可能调用了自己的paintComponent方法,所以你设置的颜色看不到,其实它是有的.只是它很快你感受不到它的变化.
#3
哦,但我的Draw继承了JPanel,不也是个控件吗?
第二个问题,我还是不明白,我从载了paintCoponent,怎么样能让字符变色呢?
第二个问题,我还是不明白,我从载了paintCoponent,怎么样能让字符变色呢?
#4
把g.drawString("khkhuyuy",10,20);
g.setColor(Color.red);
两句换个位置
g.setColor(Color.red);
两句换个位置
#5
道理就不用说了吧
#6
JPanel是容器组件。应该是要用不能分割的控件。
#7
收到,谢谢了