我正在尝试使用java创建一个包含多个选项的弹出式输入框,但我不知道最简单的方法是什么。目前,当我点击GUI中的按钮时,它就是这样做的:
public class LoadListAction implements ActionListener{
public void actionPerformed(ActionEvent e){
Object result = JOptionPane.showInputDialog(f, "Test:");
}
}
然而,这只给了我ok和取消的选项。我想有一个popus up的盒子,上面有选项1和选项2,根据按下的按钮,对输入框中的任何内容做不同的操作。
有人可以帮忙吗?
编辑:我已经尝试过使用JDialog,但似乎我无法同时获得一个输入框以及多个按钮(或者至少我不知道如何)。答案 0 :(得分:3)
答案 1 :(得分:1)
在JDialog中,您可以使用add()添加所需的组件!正如您可以看到here,您可以使用从Container
中的Component
和JDialog
继承的许多方法。 yayy!
这是我的某个程序的复制粘贴片段,希望你能从中得到一些东西:
jDialog1.setTitle("New Customer");
jDialog1.setBounds(new java.awt.Rectangle(50, 50, 1092, 638));
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel2.setText("New Customer Details");
jLabel3.setText("Name : ");
jLabel4.setText("Address Line 1 : ");
jLabel5.setText("Address Line 2 : ");
jLabel6.setText("Address Line 3 : ");
jLabel7.setText("Phone No : ");
jLabel9.setText("Type of Customer : ");
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ORDINARY", "PREVILEGED" }));
jButton6.setText("ADD CUSTOMER");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jButton7.setText("REFRESH");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jButton8.setText("CANCEL");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
javax.swing.GroupLayout jDialog1Layout = new javax.swing.GroupLayout(jDialog1.getContentPane());
jDialog1.getContentPane().setLayout(jDialog1Layout);
jDialog1Layout.setHorizontalGroup(
jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSeparator2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 1092, Short.MAX_VALUE)
.addGroup(jDialog1Layout.createSequentialGroup()
.addGap(438, 438, 438)
.addComponent(jLabel2)
.addContainerGap(502, Short.MAX_VALUE))
.addGroup(jDialog1Layout.createSequentialGroup()
.addGap(228, 228, 228)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel4)
.addComponent(jLabel3)
.addComponent(jLabel5)
.addComponent(jLabel6)
.addComponent(jLabel7)
.addComponent(jLabel9))
.addGap(18, 18, 18)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jDialog1Layout.createSequentialGroup()
.addComponent(jButton6)
.addGap(80, 80, 80)
.addComponent(jButton7)
.addGap(69, 69, 69)
.addComponent(jButton8)
.addContainerGap())
.addGroup(jDialog1Layout.createSequentialGroup()
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
.addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
.addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
.addComponent(jTextField4, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
.addComponent(jTextField5, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE))
.addGap(342, 342, 342))))
);
jDialog1Layout.setVerticalGroup(
jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jDialog1Layout.createSequentialGroup()
.addGap(32, 32, 32)
.addComponent(jLabel2)
.addGap(18, 18, 18)
.addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(75, 75, 75)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(32, 32, 32)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(36, 36, 36)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(33, 33, 33)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(32, 32, 32)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(36, 36, 36)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel9)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 119, Short.MAX_VALUE)
.addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton6)
.addComponent(jButton8)
.addComponent(jButton7))
.addGap(55, 55, 55))
);
答案 2 :(得分:1)
我想有一个popus up的盒子,上面有选项1和选项2,根据按下的按钮对输入框中的任何内容做不同的操作。
JOptionPane不支持你想要的东西,因为你有一个应该避免的混乱设计。
听起来您希望用户输入“a,b,c”等值。然后用户点击按钮“1,2,3”。然后对a1,a2,a3,b1,b2,b3,c1,c2,c3进行不同的处理。
不是很好的设计。 Intead弹出窗口应该有多个输入值和一个Ok / Cancel按钮,或者一个输入值和多个按钮可以点击。