Permalänk

Java-Vill ej läsa variabel

Hej, jag försöker läsa in en variabel som jag döpt till AxesBeskrivning.
I koden så trycks valet från en kombobox ihopa med "Beskrivning" så den läser rätt beskrivning till rätt val och visar det i tooltip(Den sätts ihopa under rubriken "//Letar efter bilden med variabeln från komboboxen och av filtypen .gif"). Detta fungerar dock inte då den bara skriver ut "AxesBeskrivning" istället för det som finns lagrat i själva variabeln. Någon som vet vad felet är?

//Importerar paketen som behövs import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Minecraftcrafting extends JPanel implements ActionListener { JLabel picture; String AxesBeskrivning = "Axes are tools used to ease the process of collecting woods, planks, chests and bookcases, but are not required to gather them. Higher levels chop wood faster "; public Minecraftcrafting() { super(new BorderLayout()); //Lägger in alla alternativ till komboboxen i en String String[]alternativ1 = { "Minecraft Crafting", "Arrows", "Axes", "Beds", "Black Wool", "Blaze Powder", "Blue Wool", "Boat", "Bone Meal", "Book", "Bookshelf", "Boots", "Bow", "Bowls", "Bread", "Brewing Stand", "Brick(Block)", "Brown Wool", "Bucket", "Cake", "Cauldron", "Chest", "Chestplates", "Clay Block", "Clock", "Compass", "Cookie", "Crafting Table", "Cyan Dye", "Cyan Wool", "Dandelion Yellow", "Detector Rails", "Dispenser", "Doors", "Enchantment Table", "Eye of Ender", "Fence Gate", "Fences", "Fermented Spider Eye", "Fishing Rod", "Flint and steel", "Furnace", "Glass Bottle", "Glass Pane", "Glistering Melon", "Glowstone","Gold Ingot", "Gold Nugget", "Golden Apple","Green Wool", "Grey Dye", "Grey Wool", "Helmets", "Hoes", "Iron Bars", "Jack-O-Lantern", "Jukebox", "Ladders", "Leggings", "Lever", "Light Blue Dye", "Light Blue Wool", "Light Gray Dye", "Light Gray Wool", "Lime Dye", "Magenta Dye", "Magenta Wool", "Magma Cream", "Maps", "Melon Block", "Melon Seeds", "Minecart", "Minerals", "Mushroom Stew", "Nether Brick Fence", "Note Block", "Orange Dye", "Orange Wool", "Ore Blocks","Painting", "Paper", "Pickaxes", "Pink Dye", "Pink Wool", "Piston", "Powered Minecart", "Powered Rail", "Pressure Plates", "Pumpkin Seeds", "Purple Dye", "Purple Wool", "Rails", "Red Wool", "Redstone Repeater", "Redstone Torch", "Rose Red", "Sandstone", "Shears", "Shovels", "Sign", "Slabs", "Snow Block", "Stairs", "Sticks", "Sticky Piston", "Stone Brick", "Stone Button", "Storage Minecart", "Sugar", "Swords", "TNT", "Torches", "Trapdoors", "Wooden Planks", "Wool", "Yellow Wool"}; //Skapar komboboxen och sätter bild nummer 0 som startbild JComboBox alternativ = new JComboBox(alternativ1); alternativ.setSelectedIndex(0); alternativ.addActionListener(this); //Sätter ihop bilden picture = new JLabel(); picture.setFont(picture.getFont().deriveFont(Font.ITALIC)); picture.setHorizontalAlignment(JLabel.CENTER); updateLabel(alternativ1[ alternativ.getSelectedIndex()]); picture.setBorder(BorderFactory.createEmptyBorder(10,0,0,0)); //Skapar en maximal storlek för bilden(större bilder anpassas medan mindre bilder inte ändras), ger också storleken på fönstret picture.setPreferredSize(new Dimension(500, 500)); //Ger en kantlinje på minimum 20 pixlar add( alternativ, BorderLayout.PAGE_START); add(picture, BorderLayout.PAGE_END); setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); } //Lyssnar efter vilket alternativ man väljer i komboboxen, lagrar i en String public void actionPerformed(ActionEvent e) { JComboBox cb = (JComboBox)e.getSource(); String bokstav = (String)cb.getSelectedItem(); updateLabel(bokstav); } //Letar efter bilden med variabeln från komboboxen och av filtypen .gif protected void updateLabel(String name) { String Beskrivning = (name + "Beskrivning"); System.out.println(Beskrivning); ImageIcon icon = createImageIcon(name + ".gif"); picture.setIcon(icon); picture.setToolTipText(Beskrivning); if (icon != null) { picture.setText(null); } else { picture.setText("Image not found"); } } //Skickar den upphittade bilden protected static ImageIcon createImageIcon(String path) { java.net.URL imgURL = Minecraftcrafting.class.getResource(path); if (imgURL != null) { return new ImageIcon(imgURL); } else { System.err.println("Couldn't find file: " + path); return null; } } //Skapar GUI private static void createAndShowGUI() { //Skapar och sätter upp fönstret JFrame frame = new JFrame("ComboBoxDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Skapar panelen som visar bilderna JComponent newContentPane = new Minecraftcrafting(); newContentPane.setOpaque(true); //content panes must be opaque frame.setContentPane(newContentPane); //Visar fönstret frame.pack(); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }

Permalänk
Medlem

Du kan inte göra sådär; försöka skapa ett variabelnamn på det sättet i runtime

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Mitt tips skulle vara för att det skall bli lite enklare, gör en Enum som håller den infon.

T.ex.

enum Crafting { AXE("Axes","Axes are tools used to ease the process of collecting woods, planks, "), osv; private String name; private Crafting(String name, String description){ this.name = name; } getters... createImageBlabla(){ } }

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk

Jag har noll erfarenhet av att använda enum funktionen, kan du visa hur jag bör sätta in den i koden? den skall ju fungera för alla variabler i komboboxen så jag kommer skriva en string med information till varje alternativ.

Permalänk
Medlem

Bara att googla E väl mening att du skall lära dig
sen när du ska bygga upp comboboxen med samtliga alternativ är det bara
for(Crafting craft : Crafting.values()){
addComboBoxItem(craft.getName());
}
så får du alla i combolistan.
hundra år sen jag höll på med Swing skräp så kommer inte ihåg exakt va som gäller för comboskiten så-.-
Variabelnamn skall alltid börja med liten bokstav ;o
Försök hålla dig till ett språk, helst engelska

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Om du inte vill hålla på med nya grejer är d väl bara kasta in allt i en Map med namnet, dvs t.ex. "Axes" som key å beskrivningen som value

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |