在Swing里是怎么做到对象JLABLE这样的TEXT内容进行刷新的
我用了updateUI();repaint();都不行

解决方案 »

  1.   

    可以在paint()里面用setText(),每当要触发的时候就repaint()一次。
      

  2.   

    建议去网上找《Swing之JTable的详细介绍》这篇文章看看,看是否可以帮到你。
      

  3.   

    昏倒, 人家说的是JLabel, 同意使用setText()
      

  4.   

    setText()这东西在初始化的时候的可以的
    触发JBUTTON的事件也是可以的
    不过从外部类来设置这个setText()虽然值是传过来了但JLABLE显示的内容还是原来的没有刷新成我设置的值
    现在的问题就是不知道怎么样去刷新他
    removeAll();
    setText();
    这个我也是试过的不行
      

  5.   

    removeAll();
    setText();
    ......JFrame.validate()
    重新效验一下久可以了;
      

  6.   

    对于绘制SWING组件 ,应该使用paintComponent(Graphics g)吧?,它会自动地调用paint()
      

  7.   

    不懂lz什么意思,用setText()应该能刷新啊!
    发段代码上来看一下吧!
      

  8.   

    我在鼠标事件里写了setText(str);
    每当鼠标点的时候得到新的str,也没用别的语句,JLabel的内容显示就自动改变了啊。
    建议你说详细一些你到底想达到什么样的效果。
      

  9.   

    这是我的JFrame public class Test extends JFrame { private javax.swing.JPanel jContentPane = null;
    public JLabel jLabel = null;
    public JTextField jTextField = null;
    private JTextField jTextField2 = null;
    private JTextField jTextField3 = null;
    private JButton jButton = null;
    /**
     * This method initializes jTextField
     * 
     * @return javax.swing.JTextField
     */    
    public JTextField getJTextField(String info) {
    if (jTextField == null) {
    jTextField = new JTextField();
    }
    jTextField.setText(info);
    //SwingUtilities.updateComponentTreeUI(this);
    // jTextField.revalidate();
    // jTextField.repaint();
    return jTextField;
    }
    /**
     * This method initializes jTextField2
     * 
     * @return javax.swing.JTextField
     */    
    private JTextField getJTextField2() {
    if (jTextField2 == null) {
    jTextField2 = new JTextField();
    }
    return jTextField2;
    }
    /**
     * This method initializes jTextField3
     * 
     * @return javax.swing.JTextField
     */    
    private JTextField getJTextField3() {
    if (jTextField3 == null) {
    jTextField3 = new JTextField();
    }
    return jTextField3;
    }
    /**
     * This method initializes jButton
     * 
     * @return javax.swing.JButton
     */    
    private JButton getJButton() {
    if (jButton == null) {
    jButton = new JButton();
    jButton.setIcon(new ImageIcon(getClass().getResource("/com/Desktop2.png")));
    jButton.setText("启动");

    }
    jButton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent ae){
    TestDemo test=new TestDemo();
    test.changeInfo();
    }
    });
    return jButton;
    }
          public static void main(String[] args) {
    }
    /**
     * This is the default constructor
     */
    public Test() {
    super();
    initialize();
    }
    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
    this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/com/Desktop2.png")));
    this.setSize(300,200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
    //this.re
    }
    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private javax.swing.JPanel getJContentPane() {
    if(jContentPane == null) {
    jLabel = new JLabel();
    jContentPane = new javax.swing.JPanel();
    jContentPane.setLayout(new java.awt.BorderLayout());
    jLabel.setText("JLabel");
    jLabel.setPreferredSize(new java.awt.Dimension(10,10));
    jLabel.setIcon(new ImageIcon(getClass().getResource("/com/Desktop2.png")));
    jContentPane.add(jLabel, java.awt.BorderLayout.CENTER);
    jContentPane.add(getJTextField(""), java.awt.BorderLayout.NORTH);
    jContentPane.add(getJTextField2(), java.awt.BorderLayout.EAST);
    jContentPane.add(getJTextField3(), java.awt.BorderLayout.SOUTH);
    jContentPane.add(getJButton(), java.awt.BorderLayout.WEST);
    }
    return jContentPane;
    }
    }
      

  10.   

    这是我用来设置JLABLE的代码
    public class TestDemo { public static void main(String[] args) {
    }

    public void changeInfo(){
    Test demo=new Test();
    demo.removeAll();

    demo.jLabel.setText("ddfsdfs");
    demo.validate();
    }
    }
      

  11.   

    楼主的代码一大股怪异的味道!!都是IDE惹的祸啊,唉!
    楼主要的其实就是这个效果嘛:package tmp;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;/**
     *
     * @author Stevech
     */
    public class JLabelUpdateTest extends JPanel {
        private JLabel myLabel;
        private JTextField field_1, field_2, field_3;
        private JButton btn;
        
        /** Creates a new instance of JLabelUpdateTest */
        public JLabelUpdateTest() {
            setLayout(new BorderLayout());
            setSize(300, 200);
            
            myLabel = new JLabel("JLabel");
            myLabel.setPreferredSize(new Dimension(10, 10));
            
            field_1 = new JTextField();
            field_2 = new JTextField();
            field_3 = new JTextField();
            
            btn = new JButton("启动");
            btn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ChangeIt.changeInfo(myLabel);
                }
            });
            
            add(myLabel, BorderLayout.CENTER);
            add(field_1, BorderLayout.NORTH);
            add(field_2, BorderLayout.EAST);
            add(field_3, BorderLayout.SOUTH);
            add(btn, BorderLayout.WEST);
        }
        
        public static void main(String[] args) {
            JFrame frame = new JFrame("myFrame");
            frame.getContentPane().add(new JLabelUpdateTest());
            frame.pack();
            frame.setVisible(true);
        }
    }class ChangeIt {
        public static void changeInfo(JLabel myLabel) {
            myLabel.setText("new String");
        }
    }没有必要什么removeAll,什么validate!!
      

  12.   

    package demo;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Test extends WindowAdapter implements ActionListener {
           JLabel label;
           JTextField textfield1,textfield2,textfield3;
           JButton button;      public Test(){
                JFrame f = new JFrame("Test");
                Container contentPane = f.getContentPane();
                contentPane.setLayout(new BorderLayout());
                
                label = new JLabel();
                textfield1 = new JTextField();
                textfield2 = new JTextField();
                textfield3 = new JTextField();
                button = new JButton("refresh");
                
                contentPane.add(label,BorderLayout.NORTH);
                contentPane.add(textfield1,BorderLayout.WEST);
                contentPane.add(textfield2,BorderLayout.EAST);
     
          }
    }
      

  13.   

    package demo;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Test extends WindowAdapter implements ActionListener {
           JLabel label;
           JTextField textfield1,textfield2,textfield3;
           JButton button;      public Test(){
                JFrame f = new JFrame("Test");
                Container contentPane = f.getContentPane();
                contentPane.setLayout(new BorderLayout());
                
                label = new JLabel();
                textfield1 = new JTextField();
                textfield2 = new JTextField();
                textfield3 = new JTextField();
                button = new JButton("refresh");
                button.addActionListener(this);
                
                contentPane.add(label,BorderLayout.NORTH);
                contentPane.add(textfield1,BorderLayout.WEST);
                contentPane.add(textfield2,BorderLayout.EAST);
                contentPane.add(textfield3,BorderLayout.CENTER);
                contentPane.add(button,BorderLayout.SOUTH);
                 
                f.setSize(new Dimension(200,200));
                f.setVisible(true);
                f.addWindowListener(this);
                
          }
           public void WindowClosing(WindowEvent e){
               System.exit(1);
           }       public void actionPerformed(ActionEvent e){
              if(e.getSource() == button) {
                    label.setText("");
                    this.validate();
               }
           }   
          
           public static void main(String args[]){
                 new Test();
           }     
    }