Java 2D多面板图形
Java 2D多面板图形,java,swing,graphics,Java,Swing,Graphics,J2D.java: import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JFrame; import javax.swing.JPanel; public class J2D extends JFrame { int x, y = 0; public J2D() {
J2D.java
:
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class J2D extends JFrame {
int x, y = 0;
public J2D() {
setTitle("2D");
setSize(613, 253);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
add(new panel ());
add(new panel2());
Thread th = new Thread(){
@Override
public void run() {
while(true){
x++;y++;
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
th.start();
}
private class panel extends JPanel{
public void paintComponent(Graphics g){
//super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.DARK_GRAY);
g2d.drawString("Fear", x, y);
}
}
private class panel2 extends JPanel{
public void paintComponent(Graphics g){
//super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.RED);
g2d.drawString("Fear2", x + 15, y);
}
}
}
当我运行此代码时,它只显示
Fear2
标签。我需要两个类,想添加两个类,但它如何正确工作?我应该写paint()
和paintComponent()
方法吗?不要坐着等别人回答你的问题,我建议你花点时间阅读,了解Swing工作原理的基本知识。您可能需要从处理布局管理器的部分开始。您的问题是试图将两个组件添加到BorderLayout的中心。如果要显示多个组件,则需要使用不同的布局maanger或将组件添加到BorderLayout的不同区域。需要在一个面板内绘制自定义渲染的所有部分。在这种情况下,您可能有一个Label
类,它知道如何以及在何处绘制字符串。自定义组件将有一个标签实例的集合,并在请求时将它们全部绘制出来。非常同意@camickr关于阅读教程的观点。