Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么代码要创建两个JDialog对象?_Java_Swing_Jcombobox_Jdialog - Fatal编程技术网

Java 为什么代码要创建两个JDialog对象?

Java 为什么代码要创建两个JDialog对象?,java,swing,jcombobox,jdialog,Java,Swing,Jcombobox,Jdialog,我在我的项目中创建了一个JFrame,它从JComboBox获取输入。我在组合框中添加了EventListener。也就是说,当我从ment中选择“其他”项时,它应该创建一个JDialog的实例。但它创建了两个实例。有人能告诉我为什么会这样吗 主要 JDialog类是: 使用ItemListener时,需要验证事件状态,如下所示: JComboBox<String> box = new JComboBox<>(); box.addItemListener(

我在我的项目中创建了一个
JFrame
,它从
JComboBox
获取输入。我在组合框中添加了
EventListener
。也就是说,当我从ment中选择“其他”项时,它应该创建一个
JDialog
的实例。但它创建了两个实例。有人能告诉我为什么会这样吗

主要 JDialog类是:
使用
ItemListener
时,需要验证事件状态,如下所示:

    JComboBox<String> box = new JComboBox<>();
    box.addItemListener(new ItemListener() {

        @Override
        public void itemStateChanged(ItemEvent e) {
            if(e.getStateChange() == ItemEvent.SELECTED){
                // do something
            }
        }
    });
JComboBox=newjcombobox();
addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent e){
如果(如getStateChange()==ItemEvent.SELECTED){
//做点什么
}
}
});

阅读更多信息。

您选择其他的次数是多少?1)为了更快地获得更好的帮助,请发布一个(最小完整的可验证示例)或(简短、完整、正确的示例)。对于本例而言,超过400 LOC并非“最小值”,可在不到50 LOC的情况下进行解释。。我只选了它once@SMA.. 2) Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。因此,它们不利于像素完美布局。相反,使用布局管理器,或者与布局填充和边框一起使用。@andreThompson,我的问题是,当我选择一个项目时,两个正在创建的JDialog,我只需要一个
package app;

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import java.awt.Color;

import javax.swing.JLabel;

import java.awt.Font;
import java.awt.SystemColor;

import javax.swing.JComboBox;
import javax.swing.JTextField;

import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.event.InputMethodListener;
import java.awt.event.InputMethodEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class OtherCharges extends JDialog {

private final JPanel contentPanel = new JPanel();
private JTextField from;
private JTextField to;
private JTextField distance;
private JTextField totalcost;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    try {
        OtherCharges dialog = new OtherCharges();
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);          
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * Create the dialog.
 */
public OtherCharges() {
    setVisible(true);
    setBounds(100, 100, 1000,700);
    getContentPane().setLayout(new BorderLayout());
    contentPanel.setBackground(Color.WHITE);
    contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
    getContentPane().add(contentPanel, BorderLayout.CENTER);
    contentPanel.setLayout(null);

    JLabel lblYouWillBe = new JLabel("You Will Be Charged As Per Taxes & LBT");
    lblYouWillBe.setForeground(Color.BLACK);
    lblYouWillBe.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 16));
    lblYouWillBe.setBounds(342, 11, 324, 22);
    contentPanel.add(lblYouWillBe);

    JLabel lblFillYourDetails = new JLabel("Fill Your Details Below ");
    lblFillYourDetails.setForeground(Color.RED);
    lblFillYourDetails.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 16));
    lblFillYourDetails.setBounds(409, 36, 164, 31);
    contentPanel.add(lblFillYourDetails);

    JLabel lblTravellingRequired = new JLabel("Travelling Required :");
    lblTravellingRequired.setBounds(47, 111, 123, 14);
    contentPanel.add(lblTravellingRequired);

    String[] travelling={"Yes","No"};
    final JComboBox travellingCombo = new JComboBox(travelling);
    travellingCombo.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            String Travellingchoice=(String) travellingCombo.getSelectedItem();
            if(Travellingchoice.equals("Yes"))
            {                   
                from.setEditable(true);
                to.setEditable(true);
                distance.setEditable(true);             
            }
            else if(Travellingchoice.equals("No"))
            {                   
                from.setEditable(false);    
                to.setEditable(false);
                distance.setEditable(false);
            }
        }
    });
    travellingCombo.setBounds(174, 108, 66, 20);
    contentPanel.add(travellingCombo);

    JLabel lblFrom = new JLabel("From");
    lblFrom.setBounds(298, 111, 34, 14);
    contentPanel.add(lblFrom);

    from = new JTextField();
    from.setBounds(331, 108, 101, 20);
    contentPanel.add(from);
    from.setColumns(10);

    JLabel lblTo = new JLabel("To");
    lblTo.setBounds(472, 111, 34, 14);
    contentPanel.add(lblTo);

    to = new JTextField();
    to.setBounds(499, 108, 101, 20);
    contentPanel.add(to);
    to.setColumns(10);

    JLabel lblTotalEstimatedDistance = new JLabel("Total Estimated Distance");
    lblTotalEstimatedDistance.setBounds(626, 111, 143, 14);
    contentPanel.add(lblTotalEstimatedDistance);

    distance = new JTextField();        
    distance.setBounds(779, 108, 86, 20);
    contentPanel.add(distance);
    distance.setColumns(10);

    JLabel lblKilometers = new JLabel("Kilometers");
    lblKilometers.setBounds(875, 111, 75, 14);
    contentPanel.add(lblKilometers);

    JLabel lblTotalEstimatedCost = new JLabel("Total Estimated Cost");
    lblTotalEstimatedCost.setBounds(626, 166, 141, 14);
    contentPanel.add(lblTotalEstimatedCost);

    totalcost = new JTextField();
    totalcost.setBounds(779, 163, 86, 20);
    contentPanel.add(totalcost);
    totalcost.setColumns(10);

    JButton btnCalculateTravellingExpense = new JButton("Calculate Travelling Expense");
    btnCalculateTravellingExpense.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
         int cal=Integer.parseInt(distance.getText());
         double cost=cal*1.50;
         String total=String.valueOf(cost);
         totalcost.setText(total);
        }
    });
    btnCalculateTravellingExpense.setBounds(329, 162, 201, 23);
    contentPanel.add(btnCalculateTravellingExpense);

    JLabel lblRupees = new JLabel("Rupees");
    lblRupees.setBounds(875, 166, 46, 14);
    contentPanel.add(lblRupees);
    {
        JPanel buttonPane = new JPanel();
        buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
        getContentPane().add(buttonPane, BorderLayout.SOUTH);
    }
}
}
    JComboBox<String> box = new JComboBox<>();
    box.addItemListener(new ItemListener() {

        @Override
        public void itemStateChanged(ItemEvent e) {
            if(e.getStateChange() == ItemEvent.SELECTED){
                // do something
            }
        }
    });