java - 如何通过 Combobox 在 java 中设置框架的标题?

标签 java swing arraylist actionlistener jcombobox

我想创建如下图所示的内容,当用户从组合框选项中选择年、月和日时,这些操作将更改标题,并且必须根据所选数据进行更改,这很简单, 我还是新手

enter image description here

到目前为止我已经这样做了,问题是它不起作用,我该怎么做?请你帮帮我好吗?

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;


public class DateForm_Complete extends JFrame {

    private JLabel          year, month, day;
    private JComboBox       cmonth, cday, cyear;

    public DateForm_Complete() {

        setTitle("Date Selection");
        setSize(400,100);
        setupWidgets();
        setVisible(true);
    }

    private void setupWidgets() {
        year=   new JLabel("Year");
        month=  new JLabel("Month");
        day=    new JLabel("Day");
        cyear=  new JComboBox();
        cmonth= new JComboBox();
        cday=   new JComboBox();

        setLayout(new GridLayout (2,3));

        add(year);   add(month);    add(day);
        add(cyear);  add(cmonth);   add(cday);

        for (int i=1900; i<2019; i++)   
        {
            cyear.addItem(i);
        }

        String months[] = {"January","February","March","April","May","June","July","August","September","October","November","December"};

        for (int i=0; i<12; i++)
        {
            cmonth.addItem(months[i]);
        }

        for (int i=1; i<32; i++)    
        {
            cday.addItem(i);
        }
        setupEvents();
    }

    private void setupEvents() {

        setDefaultCloseOperation(EXIT_ON_CLOSE);

        cyear.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ev) {
                JComboBox combo = (JComboBox)ev.getSource();
                String texty = (String)combo.getSelectedItem(); 
            }
        });

        cmonth.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ev) {
                JComboBox combo = (JComboBox)ev.getSource();
                String textm = (String)combo.getSelectedItem();
            }
        });

        cday.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ev) {
                JComboBox combo = (JComboBox)ev.getSource();
                String textd = (String)combo.getSelectedItem();     
            }
        });
        setTitle("Today is "+ texd+ "of "+ textm + "of " +texty);               
    }   
    public static void main(String[] args) {

        new DateForm_Complete();        
    }
}

最佳答案

无论何时选择组合框中的项目,您都需要重置要显示为标题的整个字符串。

因此,您需要在您的类中使用如下方法:

public void changeTitle()
{
    String year = cyear.getSeletedItem().toString();
    String month = cmonth.getSelectedItem().toString();
    String day = cday.getSelectedItem().toString();

    setTitle("Today is "+ day + "of "+ month + "of " + year);      
}

然后从 3 个 ActionListener 调用 changTitle() 方法。`

关于java - 如何通过 Combobox 在 java 中设置框架的标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54165413/

相关文章:

java - 有什么办法可以延迟PaintComponent吗?

java - 以字符串变量命名 JFrame

java - 扩展 java ArrayList

java - 从 Java 调用 Windows 颜色系统

java - 设置 AppEngine 时出现 DataNucleus Enhancer 错误

java - 如何通过 apache poi 添加评论

java - Swing:窗口最小化后图形消失

java - 防止 JScrollPane 扩展其 viewPort 组件

java - Java中对应数组元素的乘法

java - 并发修改异常 : adding to an ArrayList