Diskuze: JFrame - spouštění dvou oken
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Absolvováno
Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500

Člen

Odpovídá na etesarova
etesarova:9.7.2014 15:38
etesarova:9.7.2014 15:38
tak už jsem na to přišla, zakopaný pudl byl samozřejmě ve vláknech
čili už jenom pro to, aby tu
ta odpověď byla:
první okno
public class OknoJedna extends JFrame implements ActionListener {
JButton animuj = new JButton("animuj");
JTextField zdrojTextu = new JTextField("", 20);
String text;
//private Thread thread;
// private MyDialog dlg = new MyDialog(this);
public OknoJedna() {
super("Prvni okno");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(zdrojTextu);
getContentPane().add(animuj);
animuj.addActionListener(this);
zdrojTextu.setFont(new Font("Monospaced", Font.PLAIN, 30));
zdrojTextu.setForeground(Color.RED);
setSize(450, 200);
setBackground(Color.GRAY);
}
@Override
public void actionPerformed(ActionEvent e) {
Runnable task = new Runnable() {
@Override
public void run() {
text = new String(zdrojTextu.getText());
OknoDva f = new OknoDva();
f.setVisible(true);
f.vytvorRotaci(text);
}
};
Thread noveVlakno = new Thread(task);
noveVlakno.start();
}
public static void main(String[] args) {
JFrame f = new OknoJedna();
f.setVisible(true);
}
}
druhé okno:
public class OknoDva extends JFrame{
Logger logger = Logger.getLogger(OknoDva.class.toString());
private Container pane;
private JLabel zprava;
public OknoDva() {
super("Druhe okno");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pane = this.getContentPane();
pane.setLayout(null);
pane.setBackground(Color.DARK_GRAY);
setSize(700,500);
setLocation(200,200);
}
public void vytvorRotaci(String text) {
Insets insets = pane.getInsets();
zprava = new JLabel(text);
zprava.setFont(new Font("Monospaced", Font.PLAIN, 30));
zprava.setForeground(Color.RED);
pane.add(zprava, "North");
zprava.setBackground(Color.DARK_GRAY);
int i = 0;
while (i < pane.getWidth() - zprava.getWidth()) {
i+=20;
zprava.setBounds(insets.left + i, insets.top, 100, 100);
zprava.setSize(zprava.getWidth() + 20, zprava.getHeight());
try {
Thread.sleep(200);
Thread.currentThread().interrupt();
this.repaint();
} catch (InterruptedException e) {
logger.fine("animuju!");
}
}
int j = 0;
while (j < pane.getHeight() - zprava.getHeight() - 12) {
j+=20;
zprava.setBounds(insets.left + i, insets.top + j, 100, 100);
zprava.setSize(zprava.getWidth(), zprava.getHeight());
try {
Thread.sleep(200);
Thread.currentThread().interrupt();
this.repaint();
} catch (InterruptedException e) {
logger.fine("animuju!");
}
}
while (i > 0) {
i-=20;
zprava.setBounds(insets.left + i, insets.top + j, 100, 100);
zprava.setSize(zprava.getWidth() + 20, zprava.getHeight());
try {
Thread.sleep(200);
Thread.currentThread().interrupt();
this.repaint();
} catch (InterruptedException e) {
logger.fine("animuju!");
}
}
while (j > 0) {
j-=20;
zprava.setBounds(insets.left, insets.top + j, 100, 100);
zprava.setSize(zprava.getWidth(), zprava.getHeight());
try {
Thread.sleep(200);
Thread.currentThread().interrupt();
this.repaint();
} catch (InterruptedException e) {
logger.fine("animuju!");
}
}
zprava.setForeground(Color.DARK_GRAY);
}
}
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.
Zobrazeno 2 zpráv z 2.