【问题标题】:Java - How to add JComboBox HeaderJava - 如何添加 JComboBox 标题
【发布时间】:2020-09-20 18:10:27
【问题描述】:

我正在尝试制作一个带有无法选择的标题的 JComboBox 只是显示..有什么帮助吗?我怎样才能让 day 元素只是一个标题?

    m2.addItem("Day:");
    m2.addItem("1");
    m2.addItem("2");
    m2.addItem("3");
    m2.addItem("4");
    m2.addItem("5");
    m2.addItem("6");
    m2.addItem("7");
    m2.addItem("8");
    m2.addItem("9");
    m2.addItem("10");
    m2.addItem("11");
    m2.addItem("12");
    m2.addItem("13");
    m2.addItem("14");
    m2.addItem("15");
    m2.addItem("16");
    m2.addItem("17");
    m2.addItem("18");
    m2.addItem("19");
    m2.addItem("20");
    m2.addItem("21");
    m2.addItem("22");
    m2.addItem("23");
    m2.addItem("24");
    m2.addItem("25");
    m2.addItem("26");
    m2.addItem("27");
    m2.addItem("28");
    m2.addItem("29");
    m2.addItem("30");
    m2.addItemListener(null);
    m2.setBounds(900, 477, 50, 20);

【问题讨论】:

  • 你的意思是JCheckBoxJComboBox
  • 好的,现在检查我的答案
  • 既然这个问题出现了,就用一个JLabel来保持JComboBox的标题。 JLabel 可以放在 JComboBox 的上方或左侧。

标签: java checkbox


【解决方案1】:

好的,添加head的方法是正确的,如果你想稍后使用它,你可以避免第一个索引:

m2.addItem("Day:");
m2.addItem("1");
m2.addItem("2");

if(m2.getSelectedIndex() != 0){
   //you can use your choise :
   String x = String.valueOf(m2.getSelectedItem());
}else{
   //you can print an error or avoid your action 
}

编辑

如果您想选择默认值,请使用:

m2.addItem("Day:");
for(int i = 1; i <= 30; i++){
  m2.addItem(i+"");
}
//set the 1st element selected by default
m2.setSelectedIndex(1);

如果你不想使用索引,那么你也可以使用m2.setSelectedItem 来选择项目

m2.setSelectedItem("5");

希望对你有帮助。

【讨论】:

  • 在执行 if 循环之前我是否必须添加一个项目/动作侦听器
  • 你使用的是什么 IDE @RediRamaj
  • @RediRamaj 学习这个java2s.com/Code/JavaAPI/javax.swing/…这可以帮助你
  • 对不起,我不知道:3
  • 你不知道的@RediRamaj
【解决方案2】:

请注意,我正在回答一个 3.5 年前提出的问题。

我相信以下代码可以实现您想要做的事情。代码后的解释。

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class MenuTest implements Runnable {
    private JFrame  frame;
    private JTextField  textField;

    @Override
    public void run() {
        showGui();
    }

    private JPanel createMenuPanel() {
        JPanel menuPanel = new JPanel();
        JMenuBar menuBar = new JMenuBar();
        JMenu menu = new JMenu("Day      \u25BC");
        JList<Object> list = new JList<Object>(new Object[]{" 01",
                                                            " 02",
                                                            " 03",
                                                            " 04",
                                                            " 05",
                                                            " 06",
                                                            " 07",
                                                            " 08",
                                                            " 09",
                                                            " 10",
                                                            "11",
                                                            "12",
                                                            "13",
                                                            "14",
                                                            "15",
                                                            "16",
                                                            "17",
                                                            "18",
                                                            "19",
                                                            "20",
                                                            "21",
                                                            "22",
                                                            "23",
                                                            "24",
                                                            "25",
                                                            "26",
                                                            "27",
                                                            "28",
                                                            "29",
                                                            "30"});
        list.setPrototypeCellValue("9999");
        list.addMouseMotionListener(new MouseAdapter() {
            public void mouseMoved(MouseEvent me) {
                Point p = me.getPoint();
                list.setSelectedIndex(list.locationToIndex(p));
            }
        });
        list.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent me) {
                textField.setText(list.getSelectedValue().toString());
                menu.getPopupMenu().setVisible(false);
            }
        });
        JScrollPane scrollPane = new JScrollPane(list);
        menu.add(scrollPane);
        menuBar.add(menu);
        menuPanel.add(menuBar);
        return menuPanel;
    }

    private JPanel createTextFieldPanel() {
        JPanel textFieldPanel = new JPanel();
        textFieldPanel.setBorder(BorderFactory.createEmptyBorder(10, 30, 10, 30));
        textField = new JTextField(8);
        textFieldPanel.add(new JLabel("Selected"));
        textFieldPanel.add(textField);
        return textFieldPanel;
    }

    private void showGui() {
        frame = new JFrame("Menu");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(createMenuPanel(), BorderLayout.CENTER);
        frame.add(createTextFieldPanel(), BorderLayout.PAGE_END);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new MenuTest());
    }
}

我使用JMenu,因为当您单击JMenu 时,它[通常] 会显示菜单项列表并允许您选择一个。但是您可以向其中添加任何Component,因此我添加了一个包含JListJScrollPane

为了模拟JComboBox 的行为,将鼠标移到列表项上会突出显示鼠标指针下的项,我在JList 中添加了MouseMotionListener

为了模拟JComboBox 的行为,即通过用鼠标单击来选择列表中的一个项目,关闭弹出列表,我在JList 中添加了一个MouseListener。请注意,MouseListener 还会在JTextField 中显示JList 选定项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多