From 8641d78c7e1d61feaf7984633e2b45859ee83b41 Mon Sep 17 00:00:00 2001 From: iryupnik Date: Thu, 12 Mar 2020 18:47:52 +0100 Subject: [PATCH] Add Dialog Image a Dialog Bar classes --- src/main/java/Dialog.java | 24 +++++++++++++++++++++--- src/main/java/DialogBar.java | 22 ++++++++++++++++++++++ src/main/java/ImageDialog.java | 27 +++++++++++++++++++++++++++ src/main/java/WindowOfFreeMove.java | 17 +++++------------ src/main/resources/BaetoriceFace.png | Bin 0 -> 1528 bytes 5 files changed, 75 insertions(+), 15 deletions(-) create mode 100644 src/main/java/DialogBar.java create mode 100644 src/main/java/ImageDialog.java create mode 100644 src/main/resources/BaetoriceFace.png diff --git a/src/main/java/Dialog.java b/src/main/java/Dialog.java index 0795bb2..92ca33f 100644 --- a/src/main/java/Dialog.java +++ b/src/main/java/Dialog.java @@ -6,17 +6,27 @@ import java.awt.event.ActionListener; public class Dialog { private String text; private int textLength; + private ImageDialog imageDialog; private Timer timer; - private JPanel dialogBar; + private DialogBar dialogBar; private int charNumber; - Dialog(String text, JPanel dialogBar) { + Dialog(String text, DialogBar dialogBar) { this.text = text; textLength = text.length() + 1; this.dialogBar = dialogBar; charNumber = 0; } + Dialog(String text, DialogBar dialogBar, ImageDialog imageDialog) { + this.text = text; + this.imageDialog = imageDialog; + textLength = text.length() + 1; + this.dialogBar = dialogBar; + charNumber = 0; + } + + private JLabel prepareDialogBar(String string) { Font f1 = new Font("Times New Roman", Font.PLAIN, 20); @@ -26,7 +36,15 @@ public class Dialog { text.setVisible(true); text.setText(string); Dimension size = text.getPreferredSize(); - text.setBounds(20, 20, size.width, size.height); + + if (imageDialog != null) { + text.setBounds(120, 20, size.width, size.height); + dialogBar.setImageDialog(imageDialog); + } else { + text.setBounds(20, 20, size.width, size.height); + dialogBar.unsetImageDialog(); + } + return text; } diff --git a/src/main/java/DialogBar.java b/src/main/java/DialogBar.java new file mode 100644 index 0000000..36facd3 --- /dev/null +++ b/src/main/java/DialogBar.java @@ -0,0 +1,22 @@ +import javax.swing.*; +import java.awt.*; + +public class DialogBar extends JPanel { + private ImageDialog imageDialog; + + public void setImageDialog(ImageDialog imageDialog) { + this.imageDialog = imageDialog; + } + + public void unsetImageDialog(){ + imageDialog = null; + } + + @Override + public void paint(Graphics g) { + super.paint(g); + if (imageDialog != null){ + g.drawImage(imageDialog.getImage(), 0, 0, this); + } + } +} diff --git a/src/main/java/ImageDialog.java b/src/main/java/ImageDialog.java new file mode 100644 index 0000000..396043f --- /dev/null +++ b/src/main/java/ImageDialog.java @@ -0,0 +1,27 @@ +import javax.imageio.ImageIO; +import java.awt.*; +import java.io.IOException; + +public class ImageDialog { + private String name; + private Image image; + + public Image getImage() { + return image; + } + + ImageDialog(String name){ + this.name = name; + parseImage(); + } + + private void parseImage(){ + try { + image = ImageIO.read(getClass().getResource(name)); + } catch (IOException e) { + e.printStackTrace(); + } + } + + +} diff --git a/src/main/java/WindowOfFreeMove.java b/src/main/java/WindowOfFreeMove.java index d666822..7fd7d8f 100644 --- a/src/main/java/WindowOfFreeMove.java +++ b/src/main/java/WindowOfFreeMove.java @@ -21,7 +21,7 @@ public class WindowOfFreeMove extends JFrame { static final int KEY_EVENT = 69; private Canvas canvas; - private static JPanel dialogBar; + private DialogBar dialogBar; private JLayeredPane lp; private Map map; private Timer timer; @@ -35,18 +35,10 @@ public class WindowOfFreeMove extends JFrame { canvas.repaint(); } - public static JPanel getDialogBar() { - return dialogBar; - } - public static void setCanPersonMove(boolean canPersonMove) { WindowOfFreeMove.canPersonMove = canPersonMove; } - public static void setDialogBar(JPanel dialogBar) { - WindowOfFreeMove.dialogBar = dialogBar; - } - public void setMap(Map map) { this.map = map; } @@ -67,7 +59,7 @@ public class WindowOfFreeMove extends JFrame { CELL_SIZE * CANVAS_HEIGHT)); canvas.setBounds(0, 0, CELL_SIZE * CANVAS_HEIGHT, CELL_SIZE * CANVAS_WIDTH); - dialogBar = new JPanel(); + dialogBar = new DialogBar(); dialogBar.setBounds(0, WindowOfFreeMove.CELL_SIZE * WindowOfFreeMove.CANVAS_HEIGHT * 3 / 4, WindowOfFreeMove.CELL_SIZE * WindowOfFreeMove.CANVAS_WIDTH, WindowOfFreeMove.CELL_SIZE * WindowOfFreeMove.CANVAS_HEIGHT / 4); dialogBar.setBackground(Color.BLACK); dialogBar.setVisible(false); @@ -151,8 +143,8 @@ public class WindowOfFreeMove extends JFrame { m1.addMoveToEvent(new EventMoveToCell(1, 1, 8, 8, m2, this)); m1.addMoveToEvent(new EventMoveToCell(4, 3, 8, 1, m4, this)); - m1.addInteractionEvent(new InteractionCell(3, 5, new Dialog("Prvni zprava", dialogBar))); - m1.addInteractionEvent(new InteractionCell(5, 5, "druhá zpráva")); + m1.addInteractionEvent(new InteractionCell(3, 5, new Dialog("First line", dialogBar))); + m1.addInteractionEvent(new InteractionCell(5, 5, new Dialog("Second line", dialogBar, new ImageDialog("BaetoriceFace.png")))); m2.addMoveToEvent(new EventMoveToCell(2, 1, 8, 8, m3, this)); m2.addMoveToEvent(new EventMoveToCell(1, 3, 8, 1, m1, this)); @@ -226,6 +218,7 @@ public class WindowOfFreeMove extends JFrame { } } + protected static void sleep(long tm) { try { Thread.sleep(tm); diff --git a/src/main/resources/BaetoriceFace.png b/src/main/resources/BaetoriceFace.png new file mode 100644 index 0000000000000000000000000000000000000000..796d9b73097925195df475306076b9e75036ae59 GIT binary patch literal 1528 zcmV004R= z004l4008;_004mL004C`008P>0026e000+nl3&F}000G(Nklv5wn5XU9P zWk4U0KI}elA)$|>592>d8BgYX7)$%pe|Pn;&G&t0C0fTHKMfoE zh1F!wW#zuF<)r};AZmjEZF&!E>=*uAR;SlB1S2Yxz2lGlbLi?*NXH-hSwP4tkqx7m zhG4`u(YNV6Sk;nUA!mmnD`o5#Yi`L3krYv0uspVsji8R4I=4Y5$E?WTiSf1c)kuoC$!uM?y38h#;_P&@CSk z5C?;6PXd4o2nYr4yEipEqy{Cp8Y#pPKxhz9B~6Zwh3-@=<+!vJhMwva;seLF{TZ@N zxmFF50I{7#GC9Bo;5iS>bp;tZJ|_Sewvqsu-ovk5LY=%ZPI6HRyw`IcieF)_Vq&Or zqIhoXzW~MB7XCiicCL^WI{B&U_ZSKGC^VmTLDvr` zb#mLx%Z8&qw({dsQN+CL?4&af6Lv6}{8(z5sKu*0Bj)V8%sFt2ewTzb}$ zTXKXf&KP6!)+tAfX#}R655zKCXwI6{yl5spQ_S#X`Ws5Z7TML6Z}NDs}*N-L)AVXMMFqMtYyiGUI#@eB^MO& zzM^e9hw5?!Mjgo~hBheJ@3(bH@Fsx11%enHHW)Ir?-GAkg<$zUMIE+&E-Pb0$EWwO zi-z9Y^=DLyzb@r(h^kChhtA}1rGjA#SK^u?Prr-NB#$Z?O74lG>_`Dgl~d&FpgMG* zirWuSO&mqXAe2w+&7OAN%l literal 0 HcmV?d00001