2015-02-08 5 views
-2
origPrice * discCombo = salesPrice; 

Я понимаю, что это было бы проблемой. Поскольку я пытался преобразовать JComboBox в JTextField, и это не сработает. Я не могу найти онлайн, как это сделать. Может кто-то, пожалуйста, помогите с этим.Преобразование из JComboBox в JTextField

origPrice - это jtextfield, а discombo - это поле со списком, а salesPrice также является jtextfield. Я хочу, чтобы иметь возможность многократного использования пользователем исходной цены, а затем умножить ее на выбранный элемент, который они получают из выпадающего списка со списком, а затем он получается в salesPrice jtextfield

+0

это не ясно, что вы просите здесь, пожалуйста, попытайтесь развить, добавив контекст и что вы пробовали уже и как он не работал –

+1

JComboBox не могут быть преобразованы на JTextField. Однако вы можете установить его содержимое. Также укажите, какой именно JTextField.if «salesPrice» - это JTextField, тогда вам нужно сделать это. salesPrice.setText ((Integer) discCombo.getSelectedItem()) * origPrice + ""; –

ответ

1

Нет необходимости конвертировать JComboBox во что-то, что намного лучше, если оставить его в покое и просто извлечь данные, которые он держит, когда захотите. Это можно сделать через getSelectedItem(), проверяя, что он не является нулевым, а затем использует его.

Например:

import java.awt.event.ActionEvent; 
import java.text.DecimalFormat; 
import java.text.NumberFormat; 
import javax.swing.*; 

public class ComboDemo extends JPanel { 
    private Integer[] items = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    private DefaultComboBoxModel<Integer> comboModel = new DefaultComboBoxModel<>(items); 
    private JComboBox<Integer> combo = new JComboBox<>(comboModel); 
    private JFormattedTextField orgPriceField = new JFormattedTextField(new DecimalFormat("0.00")); 
    private JFormattedTextField finalPriceField = new JFormattedTextField(NumberFormat.getCurrencyInstance()); 

    public ComboDemo() { 
     finalPriceField.setFocusable(false); 
     orgPriceField.setColumns(10); 
     finalPriceField.setColumns(10); 
     orgPriceField.setText("0.00"); 

     add(orgPriceField); 
     add(new JLabel("x")); 
     add(combo); 
     add(new JLabel("=")); 
     add(finalPriceField); 

     add(new JButton(new CalculateAction())); 
    } 

    private class CalculateAction extends AbstractAction { 

     public CalculateAction() { 
     super("Calculate"); 
     } 

     @Override 
     public void actionPerformed(ActionEvent e) { 
     Number orgPrice = (Number) orgPriceField.getValue(); 
     Integer multiplier = ((Integer) comboModel.getSelectedItem()).intValue(); 

     double result = orgPrice.doubleValue() * multiplier; 
     finalPriceField.setValue(result); 
     } 
    } 

    private static void createAndShowGui() { 
     ComboDemo mainPanel = new ComboDemo(); 

     JFrame frame = new JFrame("ComboDemo"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGui(); 
     } 
     }); 
    } 
} 
Смежные вопросы