2011-07-05 11 views
4

私はスクロールウィンドウを持っています。スウィングウィンドウにはボタンとテキストボックスがあり、フラグにはJLabelという名前が付けられています。ボタンをクリックした後の入力に従って、ラベルはフラグからある値に変わるはずです。実行中のアプリケーションでJLabelのスウィングテキストを変更する

これを同じウィンドウでどのように実現するには?

+0

なしAPIドキュメント? – kleopatra

答えて

7
import java.awt.*; 
import javax.swing.*; 
import javax.swing.border.*; 
import java.awt.event.*; 
public class Test extends JFrame implements ActionListener 
{ 
    private JLabel label; 
    private JTextField field; 
    public Test() 
    { 
     super("The title"); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setPreferredSize(new Dimension(400, 90)); 
     ((JPanel) getContentPane()).setBorder(new EmptyBorder(13, 13, 13, 13)); 
     setLayout(new FlowLayout()); 
     JButton btn = new JButton("Change"); 
     btn.setActionCommand("myButton"); 
     btn.addActionListener(this); 
     label = new JLabel("flag"); 
     field = new JTextField(5); 
     add(field); 
     add(btn); 
     add(label); 
     pack(); 
     setLocationRelativeTo(null); 
     setVisible(true); 
     setResizable(false); 
    } 
    public void actionPerformed(ActionEvent e) 
    { 
     if(e.getActionCommand().equals("myButton")) 
     { 
      label.setText(field.getText()); 
     } 
    } 
    public static void main(String[] args) 
    { 
     new Test(); 
    } 
} 
+0

別のクラスから、 'Test'のオブジェクトを' Test t = new Test();として作成できますか? t.getLabel()。setText( "ラベルテキストの変更"); '。私はラベル(getLabel())にgetters-settersを作成しましたか? –

+1

美しい作品!私がupvote 10回することができたらいいと思う –

6

表示されるテキストを動的に変更するには、setText(str)メソッドJLabelを使用します。ボタンのactionPerformでこれを書く:

jLabel.setText("new Value"); 

簡単なデモコードは次のようになります。便利再び

JFrame frame = new JFrame("Demo"); 
    frame.setLayout(new BorderLayout()); 
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    frame.setSize(250,100); 

    final JLabel label = new JLabel("flag"); 
    JButton button = new JButton("Change flag"); 
    button.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent arg0) { 
      label.setText("new value"); 
     } 
    }); 

    frame.add(label, BorderLayout.NORTH); 
    frame.add(button, BorderLayout.CENTER); 
    frame.setVisible(true); 
関連する問題