java点击按钮弹出下拉框_自定义下拉列表与PopupWindow的使用(弹出窗口)
时间: 2024-04-30 18:18:21 浏览: 113
在Java中,可以使用Swing或JavaFX来创建下拉框和弹出窗口。下面给出两种方法:
1. 使用Swing
Swing是Java中一个常用的GUI库,可以使用JComboBox类来创建下拉框,使用JPopupMenu类来创建弹出窗口。下面是一个示例代码:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyFrame extends JFrame {
private JComboBox<String> comboBox;
private JPopupMenu popupMenu;
public MyFrame() {
super("My Frame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLayout(new FlowLayout());
comboBox = new JComboBox<>(new String[] {"Option 1", "Option 2", "Option 3"});
add(comboBox);
popupMenu = new JPopupMenu();
popupMenu.add(new JMenuItem("Menu Item 1"));
popupMenu.add(new JMenuItem("Menu Item 2"));
popupMenu.add(new JMenuItem("Menu Item 3"));
comboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (comboBox.getSelectedItem().equals("Option 1")) {
popupMenu.show(comboBox, 0, comboBox.getHeight());
}
}
});
setVisible(true);
}
public static void main(String[] args) {
new MyFrame();
}
}
```
这个程序创建了一个下拉框,当选择其中的"Option 1"时,会弹出一个包含三个菜单项的弹出窗口。可以根据需要修改弹出窗口的内容和位置。
2. 使用JavaFX
JavaFX是Java中的另一个GUI库,可以使用ComboBox和Popup类来创建下拉框和弹出窗口。下面是一个示例代码:
```
import javafx.application.Application;
import javafx.geometry.Bounds;
import javafx.geometry.Point2D;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.Popup;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MyApplication extends Application {
private ComboBox<String> comboBox;
private Popup popup;
public void start(Stage stage) {
comboBox = new ComboBox<>();
comboBox.getItems().addAll("Option 1", "Option 2", "Option 3");
popup = new Popup();
popup.getContent().add(new Label("Menu Item 1\nMenu Item 2\nMenu Item 3"));
comboBox.setOnAction(e -> {
if (comboBox.getSelectionModel().getSelectedItem().equals("Option 1")) {
Bounds bounds = comboBox.localToScreen(comboBox.getBoundsInLocal());
double x = bounds.getMinX();
double y = bounds.getMaxY();
popup.show(comboBox, x, y);
}
});
StackPane root = new StackPane(comboBox);
Scene scene = new Scene(root, 300, 200);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
这个程序创建了一个下拉框,当选择其中的"Option 1"时,会弹出一个包含三个菜单项的弹出窗口。可以根据需要修改弹出窗口的内容和位置。
阅读全文