0

ユーザーがテキストフィールドに何かを入力すると、一部のコードがエントリを処理し、それに応じて JComboBox を更新するように、JComboBox を更新する方法を作成しようとしています.1 つの問題は、JComboBox を更新できることですが、最初に開いたとき、ボックスはその中のオプションの長さを更新しておらず、以下のコードに見られるように余分な空白が表示されます。これを行うためのより良い別の方法があるかどうかはわかりませんが、これが私が思いついたものです。

助けてくれてありがとう、

ダン

import java.awt.event.*;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Catch{
public static JComboBox dropDown;
public static String dropDownOptions[] = {
         "Choose",
         "1",
         "2",
         "3"};
 public static  void main(String[] args) {
     dropDown = new JComboBox(dropDownOptions);
     final JTextField Update = new JTextField("Update", 10);
     final JFrame frame = new JFrame("Subnet Calculator");
     final JPanel panel = new JPanel();
     frame.setSize(315,430);
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     Update.addFocusListener(new FocusListener(){
    public void focusGained(FocusEvent arg0) {  
            }
            public void focusLost(FocusEvent arg0) {
                dropDown.removeAllItems();
                dropDown.insertItemAt("0", 0);
                dropDown.insertItemAt("1", 1);
                dropDown.setSelectedIndex(0);
            }
              });
        panel.add(Update);
        panel.add(dropDown);
        frame.getContentPane().add(panel);
        frame.setVisible(true);
        Update.requestFocus();
        Update.selectAll();
    }
}
4

1 に答える 1

3

1)からJTextField聞くENTER keyActionListener

2)削除FocusListener

3)Item最後に新しいものをItemからJTextFieldに追加する例。メソッドを正しくJList変更して追加する必要があるのはあなただけです。JComboBoxinsertItemAt()

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ListBottom2 {

    private static final long serialVersionUID = 1L;
    private JFrame frame = new JFrame();
    private DefaultListModel model = new DefaultListModel();
    private JList list = new JList(model);
    private JTextField textField = new JTextField("Use Enter to Add");
    private JPanel panel = new JPanel(new BorderLayout());

    public ListBottom2() {
        model.addElement("First");
        list.setVisibleRowCount(5);
        panel.setBackground(list.getBackground());
        panel.add(list, BorderLayout.SOUTH);
        JScrollPane scrollPane = new JScrollPane(panel);
        scrollPane.setPreferredSize(new Dimension(200, 100));
        frame.add(scrollPane);
        frame.add(textField, BorderLayout.NORTH);
        textField.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JTextField textField = (JTextField) e.getSource();
                DefaultListModel model = (DefaultListModel) list.getModel();
                model.addElement(textField.getText());
                int size = model.getSize() - 1;
                list.scrollRectToVisible(list.getCellBounds(size, size));
                textField.setText("");
            }
        });
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                ListBottom2 frame = new ListBottom2();
            }
        });
    }
}
于 2012-04-19T18:52:59.623 に答える