主题:[讨论]求一个关于AWT组件重画的问题
我建立了个界面,在上面显示了几个按钮,
我想通过点 上面的一个按钮来增加一个按钮,以前通过点按钮来改变字体,颜色啊,多可以实现,但是对于动态增加一个组件(如按钮)就不行。。
代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class test2{
public static void main(String []args){
test2_Frame frame=new test2_Frame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class test2_Frame extends JFrame{
private JScrollPane sp=null;
private JPanel p=null;
private JTextArea textarea,textarea2;
public test2_Frame (){
textarea=new JTextArea("dddddddddddddd");
textarea2=new JTextArea("1111111111111");
textarea.setEditable(false);
setSize(200,700);
JButton b1=new JButton("群组在线成员");
b1.addActionListener(new Listener()); //通过点他来动态在p中增加按钮组建
JButton b2=new JButton("群组在线成员22");
p=new JPanel();
p.setLayout(new GridLayout(100,1));
p.add(textarea2);
p.add(b2);
p.add(b1);
sp=new JScrollPane(p); //滚动面板中显示面板P
this.getContentPane().add(b1,BorderLayout.NORTH);
this.getContentPane().add(sp,BorderLayout.CENTER);
this.getContentPane().add(textarea,BorderLayout.SOUTH);
}
private class Listener implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton bt=new JButton("test");
p.setBackground(Color.blue); //改变面板P的颜色,成功了
p.add(bt); //在面板P中增加一个组件,但是不可以马上显示,//
//只有你改变了窗口的大小,时候才会显示增加的组件,这个时候是重画了组件吧??
repaint();
sp.repaint();
}
}
}
但是我想一点就可以马上显示增加的组件,请问怎么做,
麻烦讲解下,,谢谢。。。
代码可能有点乱,我写在了一个代码编辑器:
[url=http://www.chinajavaworld.com/thread.jspa?threadID=747873]http://www.chinajavaworld.com/thread.jspa?threadID=747873[/url]
我想通过点 上面的一个按钮来增加一个按钮,以前通过点按钮来改变字体,颜色啊,多可以实现,但是对于动态增加一个组件(如按钮)就不行。。
代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class test2{
public static void main(String []args){
test2_Frame frame=new test2_Frame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class test2_Frame extends JFrame{
private JScrollPane sp=null;
private JPanel p=null;
private JTextArea textarea,textarea2;
public test2_Frame (){
textarea=new JTextArea("dddddddddddddd");
textarea2=new JTextArea("1111111111111");
textarea.setEditable(false);
setSize(200,700);
JButton b1=new JButton("群组在线成员");
b1.addActionListener(new Listener()); //通过点他来动态在p中增加按钮组建
JButton b2=new JButton("群组在线成员22");
p=new JPanel();
p.setLayout(new GridLayout(100,1));
p.add(textarea2);
p.add(b2);
p.add(b1);
sp=new JScrollPane(p); //滚动面板中显示面板P
this.getContentPane().add(b1,BorderLayout.NORTH);
this.getContentPane().add(sp,BorderLayout.CENTER);
this.getContentPane().add(textarea,BorderLayout.SOUTH);
}
private class Listener implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton bt=new JButton("test");
p.setBackground(Color.blue); //改变面板P的颜色,成功了
p.add(bt); //在面板P中增加一个组件,但是不可以马上显示,//
//只有你改变了窗口的大小,时候才会显示增加的组件,这个时候是重画了组件吧??
repaint();
sp.repaint();
}
}
}
但是我想一点就可以马上显示增加的组件,请问怎么做,
麻烦讲解下,,谢谢。。。
代码可能有点乱,我写在了一个代码编辑器:
[url=http://www.chinajavaworld.com/thread.jspa?threadID=747873]http://www.chinajavaworld.com/thread.jspa?threadID=747873[/url]