JFrame и бегущая строка - Java
Формулировка задачи:
Вообщем есть код простой бегущей строки сделанной в JFrame, все работает, но только одно но, если запустить программу то самой строки не видно пока мы не развернем окошко во весь экран, только тогда она появляется. Хотелось бы знать причину и как это исправить.
Листинг программы
- package Thread;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.*;
- public class PrintMain extends Canvas implements Runnable{
- int x = 300, y = 20, startX = x;
- public static void main(String args[]){
- final PrintMain tm = new PrintMain();
- JFrame jr = new JFrame();
- jr.setSize(600,200);
- jr.setBackground(Color.gray);
- jr.setLocationRelativeTo(null);
- jr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- jr.setVisible(true);
- JButton b1 = new JButton("Старт");
- b1.setLayout(null);
- b1.setLocation(20, 10);
- b1.setSize(100, 50);
- b1.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e) {
- tm.start();
- }
- });
- jr.add(b1);
- jr.add(tm);
- }
- public void start(){
- Thread t = new Thread(this);
- t.start();
- }
- public void paint(Graphics g){
- g.drawString("Text", x, y);
- }
- public void run() {
- while(true){
- x = x + 1;
- try{Thread.sleep(10);}catch(Exception e){}
- if (x>=400){
- x = startX;
- }
- repaint();
- }
- }
- }
Решение задачи: «JFrame и бегущая строка»
textual
Листинг программы
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class PrintMain extends JFrame implements Runnable {
- private int x = 20;
- private int y = 20;
- private int startX = x;
- private MyCanvas canvas;
- private class MyCanvas extends JPanel {
- public MyCanvas() {
- setDoubleBuffered(true);
- }
- @Override
- protected void paintComponent(Graphics g) {
- super.paintComponent(g);
- g.drawString("Hello world", x, y);
- }
- }
- public PrintMain() {
- setSize(600, 200);
- setBackground(Color.gray);
- setLocationRelativeTo(null);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setLayout(new BorderLayout());
- canvas = new MyCanvas();
- JButton b1 = new JButton("Старт");
- b1.setLayout(null);
- b1.setLocation(20, 10);
- b1.setSize(100, 50);
- b1.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- start();
- }
- });
- add(b1, BorderLayout.SOUTH);
- add(canvas, BorderLayout.CENTER);
- }
- public static void main(String args[]) {
- PrintMain pm = new PrintMain();
- pm.setVisible(true);
- }
- public void start() {
- Thread t = new Thread(this);
- t.start();
- }
- public void run() {
- while (true) {
- x = x + 1;
- try {
- Thread.sleep(8);
- } catch (Exception e) {
- }
- if (x >= canvas.getWidth() - 100) {
- x = startX;
- }
- canvas.repaint();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д