Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
№2 зертханалық жұмыс.
Басқару элементтері
Тұтынушы графикалық интефейсінің құрастырылу принциптерін игеру. Тұтынушы графикалық интефейсін құрастыруды үйрену. Тұтынушы графикалық интерфейсі компоненттері орналасқан пакеттермен және оқиғаларды өңдеу интерфейстерімен танысу. Батырма, белгі, мәтіндік өріс құрастырып, олармен жұмыс жасауды үйрену.
1. 3-4, 5 дәрістер
2. Х.Дейтел Как программировать на С. Введение в С++ и Java, глава 29, стр.1045-1108
3. Негізгі әдістердің қысқаша сипаттамасы
Java-ның алғашқы версияларында (1.0.x) аппраттық платформалармен байланысты «ауыр» AWT компоненттері қолданылды. Дами келе ешқандай аппраттық платформа және операциялық жүйеге тәуелсіз компоненттер пайда болды. Мұндай компоненттер классы Java тілінде жазылған және Swing атты кітапханаға біріктірілген. Бұл класстарға JDK құрамында және жеке JFC (Java Foundation Classes) арқылы да қол жеткізуге болады. Жаңа компоненттермен бірге ескі AWT компоненттерін де қолдануға толық мүмкіндік бар.
Басқару элементтері. AWT пакетіндегі басқару элементтері Component классының мұрағаттары болып саналады. Swing пакетін қолданғанда компоненттер, Container классының туындысы JComponent классының мұрағаты болып саналады.
Мәтіндік белгілер Label, JLabel - создаются с помощью конструкторов Label(), Label(String str), Label(String str,int alignment) құрастырушыларының көмегімен жасалады.
Тізімдер List және JList.
Айналдыру жолақтары ScrollBar және JScrollBar.
Біржолдық енгізу аумағы TextField және JTextField.
Көпжолдық енгізу аумағы TextArea және JTextArea.
Батырмалар Button және JButton.
Батырмалар CheckBox және JCheckBox, RadioButton және JRadioButton.
AbstractButton-нан негізгі екі батырмалық класстар мұрағатталады: JButton және JToggleButton. Біріншісі әртүрлі мүмкіндіктері бар қарапайым батырма жасау үшін, ал екіншісі - радиобатырмалар (JRadioButton) және белгіленетін батырмалар (JCheckBox) жасау үшін. Бұл айтылғандардан басқа AbstractButton-нан меню жолдарын құрастыруға арналған JCheckBoxMenuItem және JRadioButtonMenuItem класстары мұрағатталады.
Батырма жасау үшін, белгісі бар JButton құрастырушысын шақырып, батырмаға орналастыру керек. Swing кітапханасында JButton классының қарапайым батырма жасауға арналған бірнеше құрастырушылары бар: JButton(), JButton(String s), JButton(Icon i), JButton(String s, Icon i).
// # 1 мысал: батырма және оның тәсілдері: MyButtons.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyButtons extends JFrame implements ActionListener {
String msg;
JButton yes, maybe;
JLabel lbl;
JTextField txt;
MyButtons() {
yes = new JButton("yes");
yes.setActionCommand("yes"); //определение команды
maybe = new JButton("may be");
lbl = new JLabel("");
txt = new JTextField(10);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(yes);
c.add(maybe);
c.add(lbl);
c.add(txt);
setSize(200,150);
setVisible(true);
yes.addActionListener(this);
maybe.addActionListener(this);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e) {
String str=((JButton) e.getSource()).getText();
if (str.equals("yes"))
msg = "Button <yes> is pressed";
else
msg = " Button <may be> is pressed ";
lbl.setText(msg);
String name=e.getActionCommand(); // извлечение команды
txt.setText(name);
}
public static void main(String[] args) {
new MyButtons();
}
}
2.1 сурет. Батырма, белгі және мәтін өрісі бар фрейм
getSource() оқиға туындатқан объект сілтемесін қайтарады, ол JButton объектіне түрлендіріледі. getText() батырмадағы мәтінді алады да, setText() тәсілінің көмегімен JLabel объектінің lbl объектіне береді. Нәтижесінде қандай батырманың басылғандығы анықталады. Батырмаға байланысты команда ActionEvent классының getActionCommand() тәсілін шақырады. Жұмыс нәтижесі JTextField компонентінде бейнеленеді.
JComboBox классы ашылатын тізім элементтерін құрастыру үшін қолданылады. Тізім элементін таңдауға болады. Таңдап алынған элементі анықтау үшін getSelectedItem() немесе getSelectedIndex() тәсілін шақыру керек.
// # 2 мысал: Ашылатын тізім: MyComboBox.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyComboBox extends JFrame implements ItemListener{
JLabel lbl;
JComboBox cb;
MyComboBox(){
lbl = new JLabel("0");
cb = new JComboBox();//создание объекта
Container c = getContentPane();
c.setLayout(new FlowLayout());
//добавление элементов в выпадающий список cb.addItem("11");
cb.addItem("22");
cb.addItem("33");
cb.addItem("44");
cb.addItemListener(this);
c.add(cb); //размещение объекта в контейнер
c.add(lbl);
setSize(300,100);
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); }
}); }
public void itemStateChanged(ItemEvent ie) {
int arg = Integer.valueOf((String)ie.getItem()).intValue();
//возведение в квадрат
double res = Math.pow(arg, 2);
lbl.setText(Double.toString(res));
}
public static void main(String[] args) {
new MyComboBox(); }
}
2.2 сурет. Ашылатын тізім
Келесі мысалда JСheckBox объектісінің қалып-күйінің өзгеруін бақылауға болады.
/* # 3 мысал: Жалауша қалып-күйінің өзгеруін бақылау: MyCheckBox.java */
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MyCheckBox extends JFrame implements ItemListener{
JCheckBox cb;
JLabel lbl;
MyCheckBox() {
cb = new JCheckBox();
lbl = new JLabel("initialization");
Container c = getContentPane();
c.setLayout(new FlowLayout());
cb.addItemListener(this);
c.add(cb);
c.add(lbl);
setSize(200,100);
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); }
});
}
public void itemStateChanged(ItemEvent ie) {
String msg;
if(ie.getStateChange() == ItemEvent.SELECTED)
msg = "True";
else msg = "False";
lbl.setText(msg); }
public static void main(String[] args) {
new MyCheckBox(); }
}
2.3 сурет. JCheckBox басқару элементі
Егер «батырмалар тобы» болса, онда RadioButton классының объектісін ButtonGroup қосу керек. Батырмалар тобы makePanel() тәсілінің көмегімен жасалып, JPanel классының объектісіне қосылады.
/* # 4 мысал: батырмалар мен жалаушалар түрлері: DiffButtons.java */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.lang.reflect.*;
public class DiffButtons extends JFrame {
static String[] str = {"-1-", "-2-", "-3-"};
DiffButtons() {
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(makePanel(JToggleButton.class, str));
c.add(makePanel(JCheckBox.class, str));
c.add(makePanel(JRadioButton.class, str));
setSize(200,250);
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); }
}); }
static JPanel makePanel(Class aCl, String[] str) {
ButtonGroup b = new ButtonGroup();
JPanel p = new JPanel();
String title = aCl.getName();
title = title.substring(title.lastIndexOf('.')+1);
p.setBorder(new TitledBorder(title));
for(int j = 0; j < str.length; j++) {
AbstractButton abs = new JButton("ошибка");
try {
Constructor cons = aCl.getConstructor(
new Class[] { String.class }); System.out.println(cons);
abs = (AbstractButton)cons.newInstance(
new Object[]{str[j]});
} catch(Exception e) {
System.err.println(e + "/n нельзя создать: " + aCl);
}
b.add(abs);
p.add(abs);
}
return p;
}
public static void main(String[] args) {
new DiffButtons(); } }
2.4 сурет. Батырмалар тобы
Бордюр тақырыбы класс атынан алынады. AbstractButton JButton көмегімен инициализацияланады. getConstructor() тәсіл аргуметтер массивін қабылдайтын Constructor объектін туындатады. Бұдан кейін батырмалар экземплярын жасайтын newInstance() тәсілі шақырылады.
Қосымшаға түрлі меню жолдарын және сұқбат терезелерін қосу үшін JOptionPane классының кеңейтілген мүмкіндіктерін қолдану керек. Бұл мүмкіндіктер showИмяDialog(параметр) классының статистикалық тәсілдер көмегімен жүзеге асырылады: showConfirmDialog(), showMessageDialog(), showInputDialog() и showOptionDialog().
//# 5 мысал: еркін диалог: DemoJDialog.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MyDialog extends JDialog implements ActionListener{
JButton cancel = new JButton("Cancel");
JButton ok = new JButton("Ok");
JFrame parent;
public MyDialog(JFrame parent, String name) {
super(parent, name, true);
this.parent = parent;
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(new JLabel("Exit ?"));
ok.addActionListener(this);
cancel.addActionListener(this);
c.add(ok);
c.add(cancel);
setSize(200, 100);
setVisible(true); }
public void actionPerformed(ActionEvent e) {
dispose();
if(e.getActionCommand().equals("Ok"))
parent.dispose(); } }
public class DemoJDialog extends JFrame {
private JButton jButton = new JButton("Dialog");
DemoJDialog() {
super("My DialogFrame");
Container c = getContentPane();
c.setLayout(new FlowLayout());
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
JDialog jDialog = new MyDialog(DemoJDialog.this, "MyDialog");
}
});
c.add(jButton); }
public static void main(String[] args) {
DemoJDialog f = new DemoJDialog();
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(200, 120);
f.setVisible(true); } }
2.5 сурет. Еркін диалог
4. Жеке тапсырма нұсқалары
5. Жұмысты тапсыруға қойылатын талаптар
Зертханалық жұмыста: