2015-05-29 5 views
0

Как получить строку с выбранной карты в поле со списком и с помощью метода getSelectedItem на fractalChoosercombobox и нанести результат на String? В настоящее время он отображает только один объект.Как отобразить все Cardlayouts

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


public class FractalDriver 
{ 
    private static final int WIDTH = 350; 
    private static final int HEIGHT = 300; 
    private static final String CANTOR = "Cantor"; 
    private static final String CIRCLE = "Circle"; 
    private static final String MANDELBROT = "Mandelbrot"; 
    private static final String SIERPINSKI = "Sierpinski"; 
    private static final String[] allFractals = {CANTOR, CIRCLE, MANDELBROT, SIERPINSKI}; 

    private JFrame frame; 
    private CardLayout cardLayout; 
    private JPanel fractalCards; 
    private JComboBox<String> fractalChooser; 
    public FractalDriver() 
    { 
    makeFrame(); 
    } 

private void makeFrame() 
{ 
    frame = new JFrame("Fractals!"); 
    frame.setSize(WIDTH, HEIGHT); 
    frame.setLayout(new BorderLayout()); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    createContents(); 
    frame.setVisible(true); 
} 

private void createContents() 
{ 
    JScrollPane cantorPane = new JScrollPane(new CantorPanel(6)); 
    JScrollPane circlePane = new JScrollPane(new CirclesPanel(6)); 
    JScrollPane mandelbrotPane = new JScrollPane(new MandelbrotPanel(6)); 
    JScrollPane sierpinskiPane = new JScrollPane(new SierpinskiPanel(6)); 

    cardLayout = new CardLayout(); 
    fractalCards = new JPanel(); 
    fractalCards.setLayout(cardLayout); 
    fractalCards.add(cantorPane, CANTOR); 
    fractalCards.add(circlePane, CIRCLE); 
    fractalCards.add(mandelbrotPane, MANDELBROT); 
    fractalCards.add(sierpinskiPane, SIERPINSKI); 
    fractalChooser = new JComboBox<String> (allFractals); 
    fractalChooser.addActionListener(new ComboListener()); 
    frame.add(fractalChooser, BorderLayout.NORTH); 
    frame.add(fractalCards, BorderLayout.CENTER); 
} 

private class ComboListener implements ActionListener 
{ 
public void actionPerformed(ActionEvent e) 
{ 
    fractalChooser.getSelectedItem(); 
    cardLayout.show(fractalCards, SIERPINSKI); 
    } 
} 

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

ответ

1

Простой случай результат getSelectedItem к String ...

private class ComboListener implements ActionListener { 

    public void actionPerformed(ActionEvent e) { 

     String name = (String)fractalChooser.getSelectedItem(); 

     if (name != null) { 
      cardLayout.show(fractalCards, name); 
     } 

    } 
} 
+0

Мог ли быть другой способ реализации метода действия? Я бы никогда не думал использовать и утверждение «if». – Anthropy

+0

Ну, getSelectedItem может вернуть значение null, поэтому вы всегда проверяете его :) – MadProgrammer

Смежные вопросы