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
}
}
});