Diskuze: Jak přistupovat k objektu z jiné třídy
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
public static void main(String[] args) {
Gui okno = new Gui();
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
okno.setVisible(true);
okno.setSize(300,300);
okno.setLocationRelativeTo(null);
Kostka k1 = new Kostka(new char[]{'K','U','N','D','T','O'});
Tady si vytvořím kostku
public class Gui extends JFrame {
private JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11,
b12, b13, b14, b15, b16;
public Gui()
{
super("MixIt");
GridBagLayout layout = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets (10,10,10,10);
Container con = getContentPane();
con.setLayout(layout);
con.setBackground(new Color(210,244,255));
b1 = new JButton(k1.pismeno);
a chtěl bych do tlacitka b1 vložit popis, který padnul na kostce, která je ale v jiné třídě...
Přidáš si konstruktor k tomu Gui, aby ti bral jako parametr i kostku.
public class Gui extends JFrame {
private JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11,
b12, b13, b14, b15, b16;
private Kostka kostka;
public Gui(Kostka kostka)
{
super("MixIt");
GridBagLayout layout = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
this.kostka = kostka;
gbc.insets = new Insets (10,10,10,10);
Container con = getContentPane();
con.setLayout(layout);
con.setBackground(new Color(210,244,255));
b1 = new JButton(kostka.pismeno);
Pak jí jen předáš:
public static void main(String[] args) {
Kostka k1 = new Kostka(new char[]{'K','U','N','D','T','O'});
Gui okno = new Gui(k1);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
okno.setVisible(true);
okno.setSize(300,300);
okno.setLocationRelativeTo(null);
Btw, tohle je totální prasokód:
private JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11,
b12, b13, b14, b15, b16;
Uprav si to na pole. Jestli neumíš pole + cykly, tak radši na práci s objekty na pár dní zapomeň a douč se základy
1-Deklarovat metodu, která vrací aktuálně hozenou hodnotu
2-Deklarovat hodnotu veřejnou
3-Využití přátelských tříd či deklarovat celou třídu jako
přátelskou. (nevím jestli Java podporuje)
Jinak ještě bys měl ukázat kód třídy Kostka
1 jsem zkoušel udělal jsem si metodu getLetter() která vrací aktuální písmenko hozené na kostce, ale stejně jí nemůžu použít v jiné třídě...
package mixit;
import java.util.Random;
public class Kostka {
public char pismeno;
char[] poleznaku;
public Kostka (char[] poleznaku)
{
this.poleznaku = poleznaku;
pismeno = (poleznaku[new Random().nextInt(poleznaku.length)]);
}
public char getLetter()
{
return pismeno;
}
jinak dík za všechny rady
hm, né že bych se v tom kódu nějak zorientoval, ale co jsem pochopil, tak by na to měly stačit (samozřejmě public jak jinak) gettery..
A jinak možností je víc..
kostku můžeš teoreticky udělat jako vnitřní třídu, private , pokud ji budeš používat jen tam,
případně nějakej kontejner, ovladač, kterej uděláš jako singleton (jedináčka, viz návrhový vzory) - ten zajistí že vždycky když ho zavoláš, tak dostaneš jednu a tu samou instanci (instaceof)..
Ale jak bylo řečeno výše, p4koo - pokud neumíš základy, je blbost chtít umět něco víc ..
EDIT : jó, už to trochu pobírám
No, tak přetíženej konstruktor na okno, a dej mu kostku parametrem, kterou si
ulož do pomocný proměnný v okně ..
Btw, tvoji třídu bych si představoval spíše jako něco takového
public class Kostka {
private char[] poleZnaku;
public Kostka (char[] poleznaku)
{
this.poleZnaku = poleznaku;
}
public char getLetter()
{
return poleZnaku[new Random().nextInt(poleznaku.length)];
}
Netvoř na něco getter, když už je to public. Navíc by jsi pokaždé
vracel to samé písmeno, takže takhle bych si to spíše představoval, když
už by to měla být kostka
Zobrazeno 8 zpráv z 8.