adh*_*dhg 3 java swing jpanel jframe repaint
我是油漆/图形的新手,并想知道如何将JPanel添加到我的代码中,使得整个图形将在JPanel上,而不是在JFrame上.
换句话说,我正在尝试创建一个允许我这样做的GUI:在右侧显示左侧JPanel 上线条的良好移动,添加一个将显示的JTextArea(在JPanel上)图形的协调.
谢谢!!!
(下图,移动线或只是运行代码)
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import javax.swing.JFrame;
public class Test extends JFrame implements Runnable
{
private Line2D line;
public Test()
{
super("testing");
this.setBounds( 500, 500, 500, 500 );
this.setVisible( true );
}
public void paint( Graphics g )
{
Graphics2D g2 = (Graphics2D) g;
g2.draw(line);
}
@Override
public void run()
{
int x=50;
while (true)
{
try
{
Thread.sleep( 50 );
line = new Line2D.Float(100+x, 100+x, 250-x, 260+x%2);
x++;
repaint();
if (x==5000)
break;
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
public static void main (String args[])
{
Thread thread = new Thread (new Test());
thread.start();
}
}
Run Code Online (Sandbox Code Playgroud)

Runnable,建立一个ActionListener调用repaint().从Swing中调用它Timer.JComponent或JPanel BufferedImage并将其添加到ImageIcona中JLabel.JComponent如果您不需要添加其他子项,或者JPanel如果您需要.对于其中一个,覆盖paintComponent(Graphics)而不是paint(Graphics).BufferedImage可能是这个用例是更好的选择,因为它似乎是一个动画(据说有意持续性)系列线.setBounds!相反,为自定义组件设置首选大小,为文本区域的构造函数使用合理的值,并将它们与布局(以及适当的填充和边框)组合,然后pack()在添加所有组件后调用框架.repaint()在Thread启动之前调用,则会有NPE ...问题是什么?哦,对,如果可以推断出问题是"如何将其他组件与自定义绘制的组件结合起来?" - 使用嵌套布局.请参阅嵌套布局示例.

如果使用BufferedImageas作为后备存储,您可以将其放置在该示例中的图像中,除了您将省略JTable上面的内容以及JSplitPane.
| 归档时间: |
|
| 查看次数: |
3776 次 |
| 最近记录: |