gpt4 book ai didi

java - 图形界面交互

转载 作者:太空宇宙 更新时间:2023-11-04 09:51:03 25 4
gpt4 key购买 nike

这是我第一次创建 Gui,我对如何创建交互感到困惑。

我试图在组合框处于单个状态时实现单选择模式,而在将组合框放置在多个状态时实现多个选择模式。我将它们放在多行注释上。

有什么想法吗?

//Interactions

//When “Single” is selected then the JList changes so only one item can be selected.

//When “Multiple” is selected, the JList changes so multiple items can be selected

//When a country, or multiple countries, is selected the JLabel changes to reflect the new selections

public class GuiTest {


public static String[] Countries = {"Africa", "Haiti", "USA", "Poland", "Russia", "Canada", "Mexico", "Cuba"};
public static String[] Selection = {"Single", "Multiple"};

JPanel p = new JPanel();
JButton b = new JButton("Testing");
JComboBox jc = new JComboBox(Selection);

JList jl = new JList(Countries);


private static void constructGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
frame.setTitle("Countries Selection");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// add a JLabel that says Welcome
JLabel label = new JLabel("Selected Items:");
frame.add(label);
frame.pack();



JComboBox jc = new JComboBox(Selection);
frame.add(jc);
frame.pack();
frame.setVisible(true);


JList jl = new JList(Countries);
frame.add(jl);
frame.pack();



JComponent panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(new JLabel("Choose Selection Mode:"));
panel.add(jc);
frame.add(panel, BorderLayout.NORTH);
frame.add(jl, BorderLayout.WEST);
frame.add(label, BorderLayout.SOUTH);



}




public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
constructGUI();

}
});
}

}

最佳答案

您应该开始将模式添加到组合框:

comboBoxCategoria.addItem("Single",0);
comboBoxCategoria.addItem("Multiple",1);

然后添加一个ActionListener到你的ComboBox来修改列表选择模式

jc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(jc.getSelectedItem().equals("Single")){
jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}else{//must equals
jl.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
}
}
});

最后在列表上添加一个 MouseListener 以检测列表选择的更改并更改 JLabel 以反射(reflect)新的选择

jl.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
label.setText(list.getSelectedValuesList().toString());
}
});

编辑:您还应该添加一个 KeyListener 来更新标签,因为可以通过箭头键更改选择

jl.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
label.setText(list.getSelectedValuesList().toString());
}
});

关于java - 图形界面交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54746948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com