3

ActionListener を持つ JButton を含む JPanel があります。一定回数クリックしたら、JButton を削除する必要があります。ただし、 remove() を呼び出すと、押されたボタンが消えません。

これが私のコードです:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class SetuPanel extends JPanel {
   private JTextField user = new JTextField();
   private JLabel label = new JLabel();
   private JButton submit = new JButton("Submit");
   private int phase = 0;
   public SetuPanel() {
      super(new FlowLayout());
      user.setPreferredSize(new Dimension(120,22));
      submit.addActionListener(new Submit());
      label.setText("Enter Desired Username:");
      add(label);
      add(user);
      add(submit);
   }
   private void remov(JComponent jc) {
      remove(jc);
      validate();
   }
   private class Submit implements ActionListener {
      public void actionPerformed(ActionEvent e) {
         System.out.println(user.getText());
         if (phase == 2) {
            phase++;
            label.setText("Playing!");
            remov(submit);
         } 
      }
   }
}

何か案は?

4

3 に答える 3

5
  • これが再び画面に表示される必要がある場合は、(むしろ)電話submit.setVisible(false)してください。JButton

  • コンテナに電話する必要がrevalidate()あり ますrepaint()

  • JPanel電話をかけるため直接アクセスできませんclass extends JPanel、次に電話する必要があります

remove(jc);
revalidate();
repaint()
于 2012-06-06T13:53:39.277 に答える
1

投稿していないコードで編集していない限りphase、 if ブロック内でのみインクリメントされます。したがって、phase決して 2 になることはありません。が呼び出されるphaseたびにインクリメントしますか?ActionListener

于 2012-06-06T13:56:29.603 に答える