我是JAVA GUI的新手,遇到了问题.下图显示了我的问题所在的GUI部分.
我想实现这一点,当我点击"点击切换"按钮时,将交换comboBox的内容.我尝试了不同的方式来交换两个comboBox的位置或交换两个ComboBox的内容,但都没有成功.
以下是我的代码中与此问题相关的部分.
1类:
import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JPanel; public class FilePathComboBox implements ActionListener { Liststrings; BufferedReader input; JComboBox comboBox; JPanel jpFilePath; JButton testJB; public FilePathComboBox(String filePathOfSyncTool) { strings = new ArrayList (); FileReader fr; try { fr = new FileReader(filePathOfSyncTool); } catch (FileNotFoundException e1) { fr = null; e1.printStackTrace(); } input = new BufferedReader(fr); try { String line = null; while ((line = input.readLine()) != null) { strings.add(line); } } catch (FileNotFoundException e) { System.err.println("Error, file " + filePathOfSyncTool + "didn't exist."); } catch (IOException e) { e.printStackTrace(); } finally { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } String[] lineArray = strings.toArray(new String[] {}); comboBox = new JComboBox(lineArray); testJB = new JButton("click to add item"); testJB.addActionListener(this); jpFilePath = new JPanel(); jpFilePath.add(comboBox); jpFilePath.add(testJB); } public JComboBox getJComboBox(){ return this.comboBox; } public void setJComboBox(JComboBox jcb){ this.comboBox = jcb; } public JPanel getjpFilePath(){ return jpFilePath; } @Override public void actionPerformed(ActionEvent arg0) { String s1 = "E:\\home\\joe\\foo"; comboBox.insertItemAt(s1, 0); comboBox.setSelectedIndex(0); } }
等级2:
import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JPanel; public class SwitchComboBox implements ActionListener { JPanel switchOverall; JButton switchButton; FilePathComboBox fpcb; FilePathComboBox fpcb2; public SwitchComboBox(){ fpcb = new FilePathComboBox("E:\\pathRecord.txt"); fpcb2 = new FilePathComboBox("E:\\pathRecord2.txt"); switchButton = new JButton("click to switch"); switchOverall = new JPanel(); switchButton.addActionListener(this); switchOverall.add(fpcb.getjpFilePath()); switchOverall.add(fpcb2.getjpFilePath()); switchOverall.add(switchButton); } public JPanel getSwitchOverall(){ return this.switchOverall; } @Override public void actionPerformed(ActionEvent e) { //Here should be the code to switch the content //or position of the two comboBox Component[] stringArray = fpcb.getJComboBox().getComponents(); Component[] stringArray2 = fpcb2.getJComboBox().getComponents(); fpcb.setJComboBox(new JComboBox()); for(int i =0; i < stringArray2.length; i++){ fpcb.getJComboBox().add(stringArray2[i]); } fpcb2.setJComboBox(new JComboBox()); for(int i =0; i < stringArray.length; i++){ fpcb2.getJComboBox().add(stringArray[i]); } } }
希望有人能帮助我.谢谢!
你的意思是组合框内的数据会交换吗?如果是这样,只需交换模型:
ComboBoxModel model1 = fpcb.getJComboBox().getModel(); ComboBoxModel model2 = fpcb2.getJComboBox().getModel(); fpcb.getJComboBox().setModel(model2); fpcb2.getJComboBox().setModel(model1);