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.
Zobrazeno 2 zpráv z 2.
//= 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.
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);
}
}
Zobrazeno 2 zpráv z 2.