Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki. Iškilo problema. Kaip nustatyti textField vietą pagal koordinates?

Tarkim:

public Appletas() 
   {
   	inputLine.setLocation(null);
   	inputLine.setLocation(80, 80);
       add(inputLine);
   }

 

Čia vistiek texField'as "input" stovi default'inėje vietoje. Kaip jį priversti judėti pagal mano norus? :/

Redagavo Ignas B
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip man klasėje ButtonListener pasiekti JTextField'a ignas? :/ Čia kaip suprantu reikia paveldėjimą organizuoti, tačiau nežinau kaip, nes man neveikia jei padarau

class ButtonListener extends Lab1 implements ActionListener

 

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JLabel;

public class Lab1 extends JPanel
{

 public Lab1() 
 {

   JButton btn1 = new JButton("Gerai");
   JLabel tekstas = new JLabel("Vardas");
   JTextField ignas = new JTextField(10);
   setLayout(null);


   btn1.addActionListener(new ButtonListener());
   add(btn1);
   add(ignas);
   add(tekstas);
   btn1.setBounds(100,70,100,20);
   ignas.setBounds(100, 30, 100, 20);
   tekstas.setBounds(50,30, 100, 20);

 }

 public static void main(String[] args) 
 {
   JFrame frame = new JFrame();
   frame.getContentPane().add(new Lab1());

   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(300, 300);
   frame.setVisible(true);
 }
}

class ButtonListener implements ActionListener 
{
 ButtonListener() 
 {

 }

 public void actionPerformed(ActionEvent e) 
 {
   if (e.getActionCommand().equals("Gerai")) 
   {
   	String vardas = ignas.getText();
   	System.out.println("Vardas yra: "+ignas);
   }
 }
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Mano siūlomas varianta naudoti "static" tipus. Jei trumpai tai jie padaro nurodytą lauką vieninteliu programoje. Taigi visus šiuos laukus:

JButton btn1 = new JButton("Gerai");
JLabel tekstas = new JLabel("Vardas");
JTextField ignas = new JTextField(10);

Siūlau perdaryti į static:

static JButton btn1 = new JButton("Gerai");
static JLabel tekstas = new JLabel("Vardas");
static JTextField ignas = new JTextField(10);

Tada bus įmanoma juos kviesti tiesiogiai per klasę Lab1:

Lab1.btn1.(...);

 

TAČIAU norint juos padaryti statiniais kintamaisiais - turi juos perkelti iš metodo į klasės kintamuosius:

public class Lab1 extends JPanel
{
 private static JButton btn1 = null;
 private static JLabel tekstas = null;
 private JTextField ignas = null;

 public Lab1() 
 {
   setLayout(null);
   btn1.addActionListener(new ButtonListener());
   add(getButton1());
   add(tekstas);
   add(ignas);
 }

 public static JButton getButton1()
 {
   if(btn1 == null)
   {
      btn1 = new JButton("Gerai");
      btn1.setBounds(100,70,100,20);
   }
   return btn1;
 }

 public static JLabel getTekstas()
 {
   if(tekstas == null)
   {
      tekstas = new JLabel("Vardas");
      tekstas.setBounds(50,30, 100, 20);
   }
   return tekstas;
 }

 public static JTextField getIgnas()
 {
   if(ignas == null)
   {
      ignas = new JTextField(10);
      ignas.setBounds(100, 30, 100, 20);
   }
   return ignas;
 }

 public static void main(String[] args) 
 {
   JFrame frame = new JFrame();
   frame.getContentPane().add(new Lab1());

   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(300, 300);
   frame.setVisible(true);
 }
}

 

Ir tada būtų galima šitaip iškviesti norimus kintamuosius:

class ButtonListener implements ActionListener 
{
 ButtonListener() 
 {
   Lab1.getIgnas().(...);
 }

 public void actionPerformed(ActionEvent e) 
 {
   if (e.getActionCommand().equals("Gerai")) 
   {
       String vardas = ignas.getText();
       System.out.println("Vardas yra: "+ignas);
   }
 }
}

 

Dar patarimas toks: Jei ši panelė yra kaip pagrindinis komponentas, kuriame saugosi visus kitus, siūlau ją padaryt JFrame'o content pane.

Redagavo Minutis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...