Шлейфы. swing jlayerpane - Java
Формулировка задачи:
Появляются шлейфы, если увести часть окна в бок(спрятать) и потом вывести на дисплей.
main class
ui progress bar
file для загрузки
Листинг программы
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import java.io.IOException;
- import javax.imageio.ImageIO;
- import javax.swing.JFrame;
- import javax.swing.JLayeredPane;
- import javax.swing.JPanel;
- import javax.swing.JProgressBar;
- public class ProgressBarPanel extends JLayeredPane {
- public static final Dimension SIZE = new Dimension(810, 24);
- private JProgressBar bar;
- public ProgressBarPanel(JProgressBar bar) {
- this.bar = bar;
- JPanel upperPanel = new JPanel(new BorderLayout(0, 0));
- upperPanel.setPreferredSize(SIZE);
- this.setPreferredSize(SIZE);
- this.add(bar, 1);
- this.add(upperPanel, 0);
- bar.setBounds(0, 0, 810, 24);
- }
- public static void main(String[] args) throws IOException {
- JProgressBar bar = new JProgressBar();
- JFrame f = new JFrame("f");
- bar.setUI(new FancyProgressBar(ImageIO.read(ProgressBarPanel.class.getResource("login-progress-bar.png"))));
- ProgressBarPanel barPanel = new ProgressBarPanel(bar);
- f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- barPanel.setPreferredSize(new Dimension(810, 24));
- f.add(barPanel);
- f.pack();
- f.setVisible(true);
- }
- }
- }
Листинг программы
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Rectangle;
- import java.awt.image.BufferedImage;
- import javax.swing.JComponent;
- import javax.swing.plaf.basic.BasicProgressBarUI;
- public class FancyProgressBar extends BasicProgressBarUI {
- public final Color border = new Color(156, 155, 155);
- public final Color bottomBorderLine = new Color(146, 154, 140);
- public final Color REST_COLOR = new Color(200, 203, 199);
- public static final int PROGRESS_WIDTH = 810;
- public static final int PROGRESS_HEIGHT = 24;
- BufferedImage image;
- public FancyProgressBar(BufferedImage bufferedImage) {
- image = bufferedImage;
- }
- // @Override
- // protected Dimension getPreferredInnerHorizontal() {
- // return new Dimension(PROGRESS_WIDTH-1, PROGRESS_HEIGHT-1);
- // }
- @Override
- protected void paintDeterminate(Graphics g, JComponent c) {
- Graphics2D g2d = (Graphics2D) g.create();
- Rectangle rec = g2d.getClipBounds();
- double complete = progressBar.getPercentComplete();
- //hard set
- complete = 0.7;
- int width = progressBar.getWidth();
- int height = progressBar.getHeight();
- int completeWidth = (int) (complete * width);
- // fill
- g2d.setColor(REST_COLOR);
- g2d.fillRect(rec.x + completeWidth, rec.y, width, height);
- // inner border
- g2d.setColor(border);
- g2d.drawLine(completeWidth, 1, rec.width, 1);
- g2d.drawLine(completeWidth, rec.height - 2, rec.width, rec.height - 2);
- g2d.drawLine(rec.x + rec.width - 2, rec.y, rec.x + rec.width - 2, rec.y + rec.height);
- g2d.setColor(bottomBorderLine);
- g2d.drawLine(completeWidth, rec.height - 3, rec.width, rec.height - 3);
- // picture
- if (completeWidth > 0)
- g2d.drawImage(image.getSubimage(0, 0, completeWidth+1, PROGRESS_HEIGHT), rec.x, rec.y, completeWidth,
- rec.height+1, null);
- // g2d.setColor(new Color(200, 200, 200));
- // g2d.fillRect(rec.x, rec.y, rec.width,rec.height);
- }
- }
Решение задачи: «Шлейфы. swing jlayerpane»
textual
Листинг программы
- Rectangle rec = g2d.getClipBounds();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д