《Java核心技术I》Swing的组合框
组合框
JComboBox类提供了组合框组件,是一个泛型类,JComboBox。
setEditable方法可以让组合框可编辑。
getSelectedItem方法获取当前的选项。
如果组合框不是可编辑的,最好调用getItemAt(combo.getSelectedIndex)。
addItem方法在末尾增加选项,不止构造器,其他任何地方都可以调用这个方法。
insertItemAt在列表任何位置都可增加。
removeItem("Monospaced")删除选项。
removeItemAt(0)删除第一项。
removeAllItems立即删除所有选项。
选择组合框,就产生一个动作事件,将获取当前选择的选项,转换成适当类型,通常是String.
faceCombo.getItemAt(faceCombo.getSelectedIndex())
组合框案例
package swing;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ComboBoxTest {
public static void main(String[] args) {
JFrame frame = new JFrame("组合框");
JLabel label = new JLabel("brown foxs and lazy dog!",JLabel.CENTER);
label.setFont(new Font("DialogInput", Font.PLAIN, 24));
frame.add(label);
JComboBox<String> faceCombo = new JComboBox<String>();
faceCombo.addItem("Serif");
faceCombo.addItem("SansSerif");
faceCombo.addItem("Monospaced");
faceCombo.addItem("Dialog");
faceCombo.addItem("DialogInput");
faceCombo.addActionListener(e -> {
System.out.println(faceCombo.getItemAt(faceCombo.getSelectedIndex()));
label.setFont(new Font(faceCombo.getItemAt(faceCombo.getSelectedIndex()), Font.PLAIN, 24));
});
var comboPanel = new JPanel();
comboPanel.add(faceCombo);
frame.add(comboPanel,BorderLayout.SOUTH);
frame.setSize(600, 400);
//初始打开为屏幕中央
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
int screenWidth = (int) screenSize.getWidth();
int screenHeight = (int) screenSize.getHeight();
//计算窗口位置
int x = (screenWidth - frame.getWidth())/2;
int y = (screenHeight - frame.getHeight())/2;
frame.setLocation(x, y);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}