[は、Java Swing] JavaでJComboBoxの – JavaでJComboBoxの
コンテンツ
JComboBoxの作成方法
JComboBoxのためのイベントを取得します
JComboBoxのオブジェクトは、あなたがにある矢印をクリックしたときに要素を選択することができますされ、その. 例えば、我々が持っています JFrameの JComboBoxの以下のフラグから選びます:
今、私たちは、上のようなJFrameのJComboBoxのを作成することで学ぼうとしています.
JComboBoxの作成方法
JComboBoxのを作成するために、我々は次のコンストラクタを使用します:
– JComboBoxの(): 何のデータのJComboBoxを作成しません
– JComboBoxの(ComboBoxModelアモデル): 指定するJComboBoxで作成されたモデル
– JComboBoxの(と[] アイテム): 配列E中の要素とするJComboBoxを作成します。
– JComboBoxの(ベクタアイテム): ベクトルEの要素とするJComboBoxを作成します。
次のプログラムは、最初に作成JFrameのようなものです. これは、メインパネルが含まれています JPanelの. メインパネルが配置されています BorderLayoutの そして、PAGE_STARTを選択するJComboBoxに水を含んでい, JLabelの 中心部に位置する主要国の旗を表示. 使用されるコードで 2 JComboBoxのでarrCountryを表示するには国旗と国名の名前で名前を取得するarrFlag文字列配列.
package nguyenvanquan7826.JComboBox; import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class MyJComboBox extends JFrame { private JComboBox<String> cbbCountry; private JLabel lbShow; private String[] arrFlag = { "vn", "china", "us", "lao", "en" }; private String[] arrCountry = { "Việt Nam", "Trung Quốc", "Mỹ", "Lào", "Anh" }; public MyJComboBox() { // add main panel to JFrame add(createMainPanel()); // set Display setTitle("JComboBox"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 300); setLocationRelativeTo(null); setVisible(true); } // create main panel with BorderLayout private JPanel createMainPanel() { JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(new EmptyBorder(10, 10, 10, 10)); // add a JComboBox to top of main panel panel.add(cbbCountry = createComboBox(arrCountry), BorderLayout.PAGE_START); // get flag name with country is selected in JComboBox String flag = arrFlag[cbbCountry.getSelectedIndex()]; // add JLabel to show flag panel.add(lbShow = createLabel(flag), BorderLayout.CENTER); return panel; } // create a JComboBox with list item in ArrayList private JComboBox<String> createComboBox(String[] arrItem) { JComboBox<String> cbb = new JComboBox<String>(arrItem); return cbb; } // create JLabel to show flag with private JLabel createLabel(String flagName) { JLabel lb = new JLabel(getFlag(flagName)); return lb; } // get flag with name is flagName private ImageIcon getFlag(String flagName) { ImageIcon flag = new ImageIcon(getClass().getResource( "/nguyenvanquan7826/JComboBox/" + flagName + ".png")); return flag; } public static void main(String[] args) { new MyJComboBox(); } }
デフォルトのJComboBoxを初期化するとき, その中の任意の要素ならば、最初の要素が選択されます. 選択した要素を決定するために、我々はこの方法を使用することができます getSelectedIndex() (要素を選択された位置を取ります) または 選出された項目を取得します() (要素を取るが選択されます) どのように、異なる目的に応じて、. 写真を撮るときには、どこにあなたの写真に合わせてパスを修正する必要性に気づきました, 彼の写真は、javaファイルと一緒にパッケージを入れました*. (ここでは写真のダウンロード)
あなたが他の国でJComboBoxの選択要素に開始コードの場合に不変のフラグを拾っていることに気づきました.
JComboBoxのためのイベントを取得します
私たちが必要とするJComboBoxの要素を選択するイベントをキャッチすることができるようにするには addActionListener JComboBoxのための. 一方、我々がしなければなりません implemetsインターフェイスのActionListener そして、上書きモード actionPerformed(ActionEvent電子). その後、我々は影響を識別し、処理するために、この方法を比較しますJComboBoxの. 私たちは、次のコードを完了しました:
package nguyenvanquan7826.JComboBox; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class MyJComboBox extends JFrame implements ActionListener { private JComboBox<String> cbbCountry; private JLabel lbShow; private String[] arrFlag = { "vn", "china", "us", "lao", "en" }; private String[] arrCountry = { "Việt Nam", "Trung Quốc", "Mỹ", "Lào", "Anh" }; public MyJComboBox() { // add main panel to JFrame add(createMainPanel()); // set Display setTitle("JComboBox"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 300); setLocationRelativeTo(null); setVisible(true); } // create main panel with BorderLayout private JPanel createMainPanel() { JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(new EmptyBorder(10, 10, 10, 10)); // add a JComboBox to top of main panel panel.add(cbbCountry = createComboBox(arrCountry), BorderLayout.PAGE_START); // get flag name with country is selected in JComboBox String flag = arrFlag[cbbCountry.getSelectedIndex()]; // add JLabel to show flag panel.add(lbShow = createLabel(flag), BorderLayout.CENTER); return panel; } // create a JComboBox with list item in ArrayList private JComboBox<String> createComboBox(String[] arrItem) { JComboBox<String> cbb = new JComboBox<String>(arrItem); cbb.addActionListener(this); return cbb; } // create JLabel to show flag with private JLabel createLabel(String flagName) { JLabel lb = new JLabel(getFlag(flagName)); return lb; } // get flag with name is flagName private ImageIcon getFlag(String flagName) { ImageIcon flag = new ImageIcon(getClass().getResource( "/nguyenvanquan7826/JComboBox/" + flagName + ".png")); return flag; } // change flag when select items in JComboBox private void changeFlag() { lbShow.setIcon(getFlag(arrFlag[cbbCountry.getSelectedIndex()])); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == cbbCountry) { changeFlag(); } } public static void main(String[] args) { new MyJComboBox(); } }
続きを読む: クラスJComboBoxの, JComboBoxのを使用
プライベートイメージアイコンgetFlag(文字列flagName) {
イメージアイコンフラグ=新しいイメージアイコン(のgetClass().のgetResource(
“/nguyenvanquan7826 / JComboBoxの/” + flagName + “.PNG”));
復帰フラグ;
}
私はこの機能を使用し、問題があります.
あなたはそれを変更したとき:
プライベートイメージアイコンgetFlag(文字列flagName){
イメージアイコンアイコン=新しいイメージアイコン(“/ホーム/ manhduy /デスクトップ/” + flagName + “.PNG”);
戻るアイコン;
}
それが正常に動作します.
私は何の問題のkかどうかを確認します?
私は私のマシンでそのパスを取りました.
2 上記のパスはあなた異なっています. あなたは上記の正しいパスをしている参照してください。.
路上で警官は私が彼でした, しかし、私が実行したとき、私はまだ私の砂糖を取得します.
修正が完了しました.