sap*_*Pro 3 java swing colors java-2d paintcomponent
码
import javax.swing.*;
import java.awt.*;
class tester {
public static void main(String args[]) {
JFrame fr = new JFrame();
JPanel p = new JPanel();
p.setBackground(Color.RED);
p.paintImmediately(20,20,500,500);
fr.add(p);
fr.setVisible(true);
fr.setSize(2000,2000);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到一个完全是红色的面板.为什么我不接线?我怎么才能得到它?
我得到一个完全涂成红色的面板.
那是因为你设置背景并且没有做任何进一步的绘画......
为什么我不接受这条线路?我怎么才能得到它?
这不是这样做的方法.你为什么打电话paintImmediately?以下是文档说的内容:
立即绘制此组件中指定区域及其与区域重叠的所有后代.
这是很少需要调用此方法.在大多数情况下,调用重绘效率更高,这会延迟实际绘制并将冗余请求折叠为单个绘制调用.如果在调度当前事件时需要更新显示,则此方法很有用.
我建议你阅读AWT/Swing中的绘画.
得到这样的东西

你可以改变你的代码:
JFrame fr = new JFrame();
JPanel p = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(20, 20, 500, 500);
}
};
p.setBackground(Color.RED);
fr.add(p);
fr.setVisible(true);
fr.setSize(200, 200);
Run Code Online (Sandbox Code Playgroud)