SwingFrame - Java
Формулировка задачи:
Создать фрейм, в котором поместить 2 кнопки. При нажатии на первую из них в окне должен появиться список выбора, а при нажатии на вторую – метка с надписью. Список должен содержать не менее 5-ти элементов, надпись на метке сделана выбранным шрифтом и цветом. Нужно создать список методом SwingFrame и пожалуйста как можно проще с комментариями.Сама я вот начала но закончить не могу..
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
//Фрейм, содержащий панель с кнопками
public class ButtonFrame extends JFrame
{ public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
private JPanel buttonPanel;
public ButtonFrame()
{ setTitle("ButtonTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// Создание кнопок
JButton yellowButton = new JButton ("Yellow");
JButton blueButton = new JButton ("Blue");
JButton redButton = new JButton ("Red");
buttonPanel = new JPanel();
// добавление кнопок к панели
buttonPanel.add(yellowButton);
buttonPanel.add(blueButton);
//добавление панели к фрейму
add(buttonPanel);
// создание действий кнопок
ColorAction yellowAction = new ColorAction(Color.YELLOW);
ColorAction blueAction = new ColorAction(Color.BLUE);
//связывание действий с кнопками
yellowButton.addActionListener(yellowAction);
blueButton.addActionListener(blueAction);
}
//слушатель действия, изменяющий цвет панели
private class ColorAction implements ActionListener
{ private Color backgroundColor;
public ColorAction (Color c)
{backgroundColor = c;
}
public void actionPerformed (ActionEvent event)
{ buttonPanel.setBackground(backgroundColor);
}
}
}Решение задачи: «SwingFrame»
textual
Листинг программы
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
//Фрейм, содержащий панель с кнопками
public class ButtonFrame extends JFrame {
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
//Панели
private JPanel buttonPanel;
private JPanel textPanel;
//Кнопки
private JButton listButton;
private JButton lableButton;
//Список
private JComboBox change;
//Компоненты списка
private String[] listFont={"Verdana, Зеленый", "Monotype Corsiva, Красный", "Times New Roman, Синий","Bickham Script One, Orange","Segoe UI, Пурпурный"};
private JLabel text;
public ButtonFrame() {
setTitle("ButtonTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// Создание кнопок
listButton = new JButton ("Выбор оформления");
lableButton = new JButton ("Показать");
//Создание выпадающего списка
change=new JComboBox(listFont);
//Текстовая метка
text=new JLabel("Этот текст будет менять оформление");
//Создание панелей
buttonPanel = new JPanel();
textPanel = new JPanel();
// добавление элементов к панелям
textPanel.add(change);
textPanel.add(text);
buttonPanel.add(listButton);
buttonPanel.add(lableButton);
//Скрытие метки и списка
change.setVisible(false);
text.setVisible(false);
//Обработка события нажатия кнопки "Выбор оформления"
listButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
change.setVisible(true);
}
});
//Обработка события нажатия кнопки "Показать"
lableButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text.setVisible(true);
//Получение значения выбранного в списке элемента
int selectIndex=change.getSelectedIndex();
//В зависимости от выбранного элемента применение свойств
switch (selectIndex){
case 0:
text.setForeground(Color.GREEN);
text.setFont(new Font("Verdana", Font.PLAIN, 14) );
break;
case 1:
text.setForeground(Color.RED);
text.setFont(new Font("Monotype Corsiva", Font.PLAIN, 14) );
break;
case 2:
text.setForeground(Color.BLUE);
text.setFont(new Font("Times New Roman", Font.ITALIC, 14) );
break;
case 3:
text.setForeground(Color.ORANGE);
text.setFont(new Font("Bickham Script One", Font.ROMAN_BASELINE, 14) );
break;
case 4:
text.setForeground(Color.MAGENTA);
text.setFont(new Font("Segoe UI", Font.PLAIN, 14) );
break;
default:
System.out.println("Ничего не выбрано");
}
}
});
//добавление панелей к фрейму
add(buttonPanel, BorderLayout.SOUTH);
add(textPanel, BorderLayout.CENTER);
//Отображение фрейма в середине
setLocationRelativeTo(null);
//Завершение программы по закрытию фрейма
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main (String[] args) {
ButtonFrame main = new ButtonFrame();
main.setVisible(true);
}
}