当前位置: 代码迷 >> Java相关 >> [讨论] JTextArea中画矩形问题。
  详细解决方案

[讨论] JTextArea中画矩形问题。

热度:476   发布时间:2007-04-20 23:02:07.0
[讨论] JTextArea中画矩形问题。

为什么在JTextArea中画矩形时,矩形框只是一闪而过?怎么让矩形框一直保持呢?


import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JTextArea;
import javax.swing.JFrame;


public class test extends JFrame {

JTextArea jta = new JTextArea();

public test() {

super.setTitle("test");
this.add(jta);
this.setSize(500,500);
this.setVisible(true);

}
public static void main(String[] args) {

new JTextAreaHex_drawRectangle();
}
}


class JTextAreaHex_drawRectangle extends javax.swing.JTextArea {


test t = new test();
public JTextAreaHex_drawRectangle() {

this.paintComponent(t.getGraphics());

}

protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.drawRect(0, 0, 100, 100);
}
}

搜索更多相关的解决方案: JTextArea  中画  矩形  

----------------解决方案--------------------------------------------------------
我在JButton中画图也是一样的问题。。。期待高手解决哈
----------------解决方案--------------------------------------------------------

我用了一个线程,不知道效果好不好 。


import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JTextArea;
import javax.swing.JFrame;


public class test extends JFrame {

JTextArea jta=new JTextArea();

public test() {

super.setTitle("test");
this.add(jta); // Thread t=new Thread(jta);
//t.start();
this.add(jta);
this.setSize(500,500);
this.setVisible(true);

}
public static void main(String[] args) {

new JTextAreaHex_drawRectangle();
}
}


class JTextAreaHex_drawRectangle extends javax.swing.JTextArea implements Runnable{


test t = new test();
public JTextAreaHex_drawRectangle() {

//this.paintComponent(t.getGraphics());
Thread tt=new Thread(this);
tt.start();

}

protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.drawRect(50, 50, 100, 100);
}

public void run() {
// TODO Auto-generated method stub
while(true)
{
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.paintComponent(t.getGraphics());
repaint();
}
}
}


----------------解决方案--------------------------------------------------------

可是LZ的代码为什么会出现一闪而逝呢

不明白


----------------解决方案--------------------------------------------------------

谢谢3楼的朋友,问下JComponent有没有什么方法能够让矩形框维持而不用线程呢?


----------------解决方案--------------------------------------------------------

这个我不是很清楚,也许有更好的方法!!


----------------解决方案--------------------------------------------------------
[CODE]class MyTextArea extends JTextArea{
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);
g.drawRect(10,10,getWidth()-20,getHeight()-20);
}
}[/CODE]

这样就可以了啊,有必要那么复杂么??
----------------解决方案--------------------------------------------------------
以下是引用千里冰封在2007-4-21 12:30:04的发言:
[CODE]class MyTextArea extends JTextArea{
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);
g.drawRect(10,10,getWidth()-20,getHeight()-20);
}
}[/CODE]

这样就可以了啊,有必要那么复杂么??

我只是测试一下,我是想实现跟UE一样的功能,按上下左右都会选种文本,可直接选择又达不到效果,所以就直接画了。这方法很笨,见笑了


----------------解决方案--------------------------------------------------------