2016-12-05 5 views
0

ここに私のコードです。ユーザがリストから色を選択して「色を表示」ボタンを押すと、「色を表示」ボタンの色が選択された色によって変化するはずである。リストから選択した "colorButton"の色を変更したい。 (色はユーザーによってリストに追加されます)

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

public class A8 extends JFrame { 
JList list; 
JTextField inputField; 
DefaultListModel model; 
// String selected; 

A8(){ 

    model = new DefaultListModel(); 
    model.addElement("RED"); 
    list = new JList(model); 

    JButton addButton = new JButton("ADD"); 
    addButton.addActionListener(
      new ActionListener(){ 
       public void actionPerformed(ActionEvent ae) 
       { 
        String str = inputField.getText(); 
        model.addElement(str); 
       } 
      } 
    ); 

    JButton colorButton = new JButton("Show Color"); 
    colorButton.addActionListener(
      new ActionListener(){ 
       public void actionPerformed(ActionEvent ae) 
       { 
        String str = list.getSelectedValue().toString(); 
        //JOptionPane.showMessageDialog(null, "It's "+ str); 
        // JOptionPane.setBackground(color.str); 
        colorButton.setBackground(Color.str); 
       } 
      } 
    ); 

    inputField=new JTextField(); 
    inputField.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 

     } 
    } 
    ); 
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

    JPanel inputPanel = new JPanel(); 
    inputPanel.add(addButton); 
    inputPanel.add(colorButton); 
    colorButton.setBounds(20,50,100,20); 
    inputPanel.setLayout(new BoxLayout(inputPanel,BoxLayout.Y_AXIS)); 

    inputField.setLayout(new FlowLayout()); 
    inputField.setBounds(5, 5, 100, 100); 
    inputField.setPreferredSize(new Dimension(120,20)); 
    JScrollPane scrollPane=new JScrollPane(list); 
    scrollPane.setPreferredSize(new Dimension(200,200)); 

    Container container = getContentPane(); 
    add(scrollPane); 
    container.add(inputPanel); 
    add(inputField); 
    container.setLayout(new FlowLayout()); 


    //container.setBackground(Color.selected); 

    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setSize(500, 250); 
    setVisible(true); 

} 
    public static void main(String args[]) 
     { 
     new A8(); 
    } 
} 

コードを更新する場所を教えてください。

答えて

2
colorButton.setBackground(Color.str); 

上記のコードは、Colorクラスの変数を参照しようとしていますが、存在しません。そのように変数名を作ることができます。

問題を解決する1つの方法は、あなたがサポートしたい色のHashMapを作成することです

HashMap<String, Color> colors = new HashMap<String, Color>(); 
colors.put("RED", Color.RED); 
... 

次に、あなたのActionListenerにあなたが使用して色にアクセスすることができます。

String str = list.getSelectedValue().toString(); 
Color color = colors.get(str); 
colorButton.setBackground(color); 
関連する問題