samedi 25 avril 2015

jButton Problem, ein Rieser Button bedeckt das ganze frame

Also ich habe hier diesen Code der Jeweils 28 Buttons generiert die wie Gegenstände dargestellt sind (18x Sarabrew und 10x Superrestore) Die Buttons werden gleichzeitig auch in einem Viereck angeordnet.

Soweit sogut Funktioniert das ja auch, allerdings ist da ein Button, von dem ich nicht weiß wo er herkommt!?
UND ER IST ÜBER DEM GANZEN FRAME!!

Wenn ich das ganze Compile sieht man die Buttons oben Links angeordnet in einem "Inventar",
und ein großen Button der aus dem nichts im Hintergrund erscheint (Und ich weiß nicht wo er herkommt)
wenn ich jetzt mit der Maus in das Compilte Frame reingehe verschwindet das Inventar oben links wie man sehen
kann, allerdings wenn man mit der Maus dort drüber geht sind sie doch noch da, auch Anklickbar.

Falls mir jemand sagen kann wo dieser große Button herkommt wäre ich sehr sehr Dankbar weil ich finde ihn nicht

Hier ein .gif das die oben erläuterte Situation veranschaulicht:

Gyazo - 8854b5aa30134ad4b2165ab42f8194c2.gif

Falls jemand den großen Button im hintergrund Lokalisieren ( und Terminieren ) kann, bedanke ich mich jetzt schonmal

Meine Vermutung ist das das Problem des Buttons irgendwo in Zeile 56-76 auftaucht

Java Code:

  1.  
  2. package main;
  3.  
  4. import java.awt.Color;
  5. import java.awt.Dimension;
  6. import java.awt.Insets;
  7. import java.awt.Point;
  8. import java.awt.Rectangle;
  9. import java.awt.event.ActionEvent;
  10. import java.awt.event.ActionListener;
  11. import java.text.NumberFormat;
  12. import java.util.HashMap;
  13. import javax.swing.ImageIcon;
  14. import javax.swing.JButton;
  15. import javax.swing.JFormattedTextField;
  16. import javax.swing.JFrame;
  17. import javax.swing.JLabel;
  18. import javax.swing.Timer;
  19.  
  20. public class Main {
  21. private static int hp = 99;
  22.  
  23. private static final HashMap<JButton, Item> inventory = new HashMap<JButton, Item>();
  24.  
  25. public static final void main(String[] args) {
  26. final JFrame frame = new JFrame();
  27. final JLabel hpLabel = new JLabel("hp: " + hp);
  28.  
  29. JFormattedTextField numberField = new JFormattedTextField(
  30. NumberFormat.getIntegerInstance());
  31. numberField.setValue(new Integer(0));
  32.  
  33. numberField.setPreferredSize(new Dimension(22, 22));
  34. frame.add(numberField);
  35.  
  36. frame.setDefaultCloseOperation(3);
  37. frame.getContentPane().setBackground(Color.BLUE);
  38. frame.setResizable(false);
  39.  
  40. frame.add(hpLabel);
  41. JLabel inv = new JLabel(new ImageIcon("resources\\Inventory.png"));
  42. inv.setSize(243, 336);
  43. inv.setBounds(new Rectangle(new Point(50, 50), inv.getSize()));
  44. // frame.add(inv);
  45.  
  46. ActionListener potListener = new ActionListener() {
  47.  
  48. @Override
  49. public void actionPerformed(ActionEvent e) {
  50. JButton slot = (JButton) e.getSource();
  51. inventory.get(slot).setDrunk();
  52. }
  53.  
  54. };
  55.  
  56. for (int counter = 0; counter <= 28; counter++) {
  57. Item potion = new Item(counter < 18 ? Item.Type.Sarabrew
  58. : Item.Type.Superrestore);
  59. JButton potButton = new JButton(new ImageIcon("resources\\"
  60. + potion.getType().name() + " (4).png"));
  61. potButton.setMargin(new Insets(0, 0, 0, 0));
  62. potButton.setBorder(null);
  63. int x = counter % 4, y = counter / 4;
  64. potButton.setSize(new Dimension(potButton.getIcon().getIconWidth(),
  65. potButton.getIcon().getIconHeight()));
  66. potButton.setBounds(new Rectangle(new Point(20 + (x * 41),
  67. 20 + (y * 36)), potButton.getSize()));
  68. System.out.printf("(%d,%d),\t%dx%d\n", potButton.getLocation().x,
  69. potButton.getLocation().y, potButton.getSize().width,
  70. potButton.getSize().width);
  71. inventory.put(potButton, potion);
  72.  
  73. frame.add(potButton);
  74. potButton.addActionListener(potListener);
  75.  
  76. }
  77.  
  78. frame.setSize(800, 800);
  79. frame.setLocationRelativeTo(null);
  80. frame.setVisible(true);
  81.  
  82. new Timer(600, new ActionListener() {
  83.  
  84. @Override
  85. public void actionPerformed(ActionEvent e) {
  86.  
  87. for (JButton slot : inventory.keySet()) {
  88. Item item = inventory.get(slot);
  89. if (item.getType() == Item.Type.Vial) {
  90. continue;
  91. }
  92.  
  93. if (item.wasDrunk()) {
  94. item.drink();
  95.  
  96. slot.setIcon(new ImageIcon("resources\\"
  97. + item.getType().name()
  98. + (item.getType() != Item.Type.Vial ? (" ("
  99. + item.getDoses() + ")") : "") + ".png"));
  100. hp = (int) Math.floor(((hp * 115) / 100) + 2);
  101. if (hp > 115)
  102. hp = 115;
  103. hpLabel.setText("hp: " + hp);
  104.  
  105. }
  106. }
  107. }
  108.  
  109. }).start();
  110.  
  111. }
  112. }


jButton Problem, ein Rieser Button bedeckt das ganze frame

0 commentaires:

Enregistrer un commentaire