【发布时间】:2014-06-28 02:05:49
【问题描述】:
我有一个包含选择的组合框。我正在尝试应用 actionListener 在 textField 上显示选定的字符串。我不知道如何完成这个,我所读到的一切让我更加困惑。
这是组合框的代码:
JComboBox comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] {"Select Something", "Selection 1", "Selection 2", "Selection 3", "Selection 4"}));
panelTop.add(comboBox);
comboBox.setPreferredSize(new Dimension(160, 20));
comboBox.addItem("Select Something");
文本域代码:
textField = new JTextField();
panelTop.add(textField);
textField.setColumns(40);
到目前为止我对 actionListener 的了解:
public void actionPerformed(ActionEvent e) {
JComboBox comboBox = (JComboBox)e.getSource();
String newSelection = (String)comboBox.getSelectedItem();
currentPattern = newSelection;
}
完整代码:
package SwingAssign2;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import java.awt.BorderLayout;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import java.awt.FlowLayout;
import javax.swing.SwingConstants;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.DefaultComboBoxModel;
public class SwingAssign2 {
private JFrame frame;
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SwingAssign2 window = new SwingAssign2();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public SwingAssign2() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setSize(600, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panelTop = new JPanel();
FlowLayout fl_panelTop = (FlowLayout) panelTop.getLayout();
fl_panelTop.setAlignment(FlowLayout.LEFT);
frame.getContentPane().add(panelTop, BorderLayout.NORTH);
//panel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
final JComboBox comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] {"Select Something", "Selection 1", "Selection 2", "Selection 3", "Selection 4"}));
panelTop.add(comboBox);
comboBox.setPreferredSize(new Dimension(160, 20));
comboBox.addItem("Select Something");
textField = new JTextField();
panelTop.add(textField);
textField.setColumns(40);
JPanel panelBottom = new JPanel();
frame.getContentPane().add(panelBottom, BorderLayout.SOUTH);
panelBottom.setLayout(new BorderLayout(0, 0));
JLabel status = new JLabel("Status");
status.setHorizontalAlignment(SwingConstants.CENTER);
panelBottom.add(status, BorderLayout.SOUTH);
status.setBorder(BorderFactory.createLoweredBevelBorder());
JTextPane txtpnSomeContentOn_B = new JTextPane();
txtpnSomeContentOn_B.setText("Some content on the bottom panel\r\nMore content\r\nSome more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content");
JScrollPane jScrollPane3 = new JScrollPane(txtpnSomeContentOn_B);
jScrollPane3.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane3.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panelBottom.add(jScrollPane3, BorderLayout.NORTH);
jScrollPane3.setPreferredSize(new Dimension(200, 200));
//bText.setBorder(BorderFactory.createLoweredBevelBorder());
JPanel panelCenter = new JPanel();
frame.getContentPane().add(panelCenter, BorderLayout.CENTER);
panelCenter.setLayout(new GridLayout(0, 2, 0, 0));
JTextPane txtpnSomeContentOn_0 = new JTextPane();
txtpnSomeContentOn_0.setText("Some content on the left panel\r\nMore content\r\nSome more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content");
JScrollPane jScrollPane1 = new JScrollPane(txtpnSomeContentOn_0);
jScrollPane1.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panelCenter.add(jScrollPane1);
JTextPane txtpnSomeContentOn = new JTextPane();
txtpnSomeContentOn.setText("Some content on the right panel\r\nMore content\r\nSome more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content\r\nMore and more content");
JScrollPane jScrollPane2 = new JScrollPane(txtpnSomeContentOn);
jScrollPane2.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane2.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panelCenter.add(jScrollPane2);
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
textField.setText((String) comboBox.getSelectedItem());
}
}
});
}
}
【问题讨论】: