Just nu i M3-nätverket
Gå till innehåll

Que

Medlem
  • Antal inlägg

    127
  • Gick med

  • Senaste besök

Om Que

  • Medlemstitel
    Aktiv
  • Födelsedag 1973-11-15

Kontaktinformation

  • Hemsida
    http://

Profil

  • Ort
    Karlskrona
  1. Den där varningen får man när kompilatorn inte vet typen på högerledet vid kompilering. Det sker normalt när man inte inkluderat rätt headerfiler. Den kan få reda på vad symbolen betyder vid länkning, om den finns. [inlägget ändrat 2006-07-24 09:29:43 av Que]
  2. Que

    Rullmeny?

    String[] theOptions = new String[]{"A", "B", "C"}; JComboBox theBox = new JComboBox(theOptions); yourFrame.add(theBox);
  3. Det går, men inte så enkelt som att bara sätta tooltip med en rad, tyvärr. Du måste dels lägga till en actionlistener till jcomboboxen för att uppdatera det valda fältets tooltip, dels bygga en en egen itemcellrenderer för att ge alla grejer i listan tooltips när man väljer. Nedan är ett exempel: [log] public class Ook extends JFrame implements ActionListener { public Ook() { super("ook"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); JComboBox theBox = new JComboBox(new String[]{"wooooooo hoooooooooooooooooooooooo", "japp","nepp"}); theBox.setToolTipText(theBox.getSelectedItem().toString()); theBox.setRenderer(new TooltipRenderer()); theBox.addActionListener(this); getContentPane().add(theBox); setSize(100, 50); } public static void main( String[] args ) { new Ook().setVisible(true); } public void actionPerformed( ActionEvent e ) { JComboBox theBox = (JComboBox) e.getSource(); theBox.setToolTipText(theBox.getSelectedItem().toString()); } private class TooltipRenderer extends JLabel implements ListCellRenderer { public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus ) { setText(value.toString()); setBackground(cellHasFocus || isSelected?Color.lightGray:Color.white); setToolTipText(value.toString()); return this; } public void paint(Graphics g) { g.setColor(this.getBackground()); g.fillRect(0,0,getWidth(), getHeight()); super.paint(g); } } } [/log] Hoppas det hjälpte.
  4. Det är för att resultatet av operationer (+,-,*,/, ...) alltid blir den "största" definierande typen av dom två operanderna. Dvs, int+char=int, int+long=long osv. Det är för att kompilatorn är smart nog att se att den hittills otypade siffran 1 är "litet nog" att få plats in en char, så den genererar inget fel.. det kallas tydligen för compile-time narrowing (se exemplet på sidan 95 i JLS v3, http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf). [Edit:] Du kan alltid casta direkt: int index = 1; char tecken = 'a' + (char) index; [inlägget ändrat 2006-05-08 09:47:51 av Que]
  5. Trådar är rätt jobbiga grejer...är det absolut nödvändigt att använda det? Just hur J2ME hanterar det vet jag inte, men i normalfallet så startas och avslutas den trådade exekveringen inuti public void run() ja, fast all metoder som anropas inifrån run() körs förstås i samma tråd. Det är lite svårt att ge några bra tips utan att veta vad du gör med dina filer, när, och vad du vill uppnå. En rätt bra artikel om trådning i J2ME verkar http://developers.sun.com/techtopics/mobility/midp/articles/threading2/ vara.
  6. Ett tips är generics (kom i 1.5), då slipper du casta och får bättre typsäkerhet: Vector<JTextField> vektorn; ... ... JTextField textfalt = vektorn.get(i); Om du inte har 1.5 så gör du: JTextField theField = (JTextField) vektorn.get(i); Vilken typ av objekt ligger i Vectorn, förresten?
  7. Nja, classpath ska inte riktigt vara så. Dom kataloger du ska ange där är dom där dom kompilerade java-klasserna (.class) finns....såvida inte du har lagt dom där, förstås?
  8. En annan variant på StringTokenizer är att använda sig av String.split(): String dinString; String[] rader = dinString.split("[\r\n]+"); Sen ligger varje rad i varsin sträng i arrayen rader och kan indexeras direkt.
  9. Google gav: http://www.cryer.co.uk/brian/mswinswdev/msdev_lnk2001uesetx.htm
  10. Hej, klart det går. Allt du behöver är formatbeskrivningen... Kolla in t.ex. http://sc.openoffice.org/excelfileformat.pdf eller http://www.koders.com/c/fidB5BF62EC779DCF28C77A215866D122B1571A1AE4.aspx eller http://chicago.sourceforge.net/xlhtml/ eller Googla loss lite.
  11. Ett par tips. Det här: "return vikt/(langd*langd);" returnerar alltid 0, såvida inte du är en omöjligt fet dvärg. För jag antar att enheten för längd är cm och vikt kg? Pröva med 10000*vikt/(langd*langd) istället. Men det blir fortfarande avrundat nedåt, så bättre är att ha: public float Userbmi() { return 10000f*vikt/(langd*langd); } Skippa sedan "static" överallt...
  12. Vadå? sendto finns inte? Vilken distribution använder du egentligen? Eller vad menar du med "kernel-api"? ... Ah, nu ser jag efter lite Googling. Kanske http://mail.nl.linux.org/kernelnewbies/2003-12/msg00107.html kan vara till hjälp? [inlägget ändrat 2006-04-11 12:54:03 av Que]
  13. Que

    combobox

    Ping, om du nu vill ha en lösning i Java och inte JavaScript så kanske följande kan vara ett tips. Det är inte så lysande skrivet direkt, men utgår från att alla JComboBoxar är knutna till en "datapool" som uppdaterar alla andra comboboxars datamodell automagiskt när en av dom ändras. [log] import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.HashMap; public class Combo extends JFrame { private SharedDataPool myPool; private JComboBox[] myBoxes; public Combo( String title ) { super(title); myPool = new SharedDataPool(); for (int i = 0; i < 10; i ++) { myPool.addValue(""+i); } myBoxes = new JComboBox[5]; setLayout(new FlowLayout()); for (int i = 0; i < 5; i ++) { myBoxes = new JComboBox(new MultipleExclusionOwnerModel(myPool)); myBoxes.addItemListener(myPool); getContentPane().add(myBoxes); } setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); pack(); } public static void main(String[] args) { new Combo("Ook").setVisible(true); } private class SharedDataPool implements ItemListener { private HashMap<MultipleExclusionOwnerModel, String> myOwnedList; private ArrayList<MultipleExclusionOwnerModel> myListeners; private ArrayList<String> myValues; public SharedDataPool( ) { myOwnedList = new HashMap<MultipleExclusionOwnerModel, String>(); myListeners = new ArrayList<MultipleExclusionOwnerModel>(); myValues = new ArrayList<String>(); } public int getSize() { return myValues.size() - myOwnedList.size(); } public void addListener(MultipleExclusionOwnerModel aModel) { myListeners.add(aModel); } public void addValue(String aValue) { myValues.add(aValue); reloadAllModelsExcept(null); } public ArrayList<String> getAvailable(MultipleExclusionOwnerModel anAsker) { ArrayList<String> theList = new ArrayList<String>(); for (String theValue : myValues) { if ( (myOwnedList.get(anAsker) == theValue) || !myOwnedList.containsValue(theValue)) { theList.add(theValue); } } return theList; } public void setSelection( MultipleExclusionOwnerModel aModel, String s ) { if (myOwnedList.get(aModel) == s) { return; } myOwnedList.put(aModel, s); reloadAllModelsExcept(aModel); } public void reloadAllModelsExcept(MultipleExclusionOwnerModel aModel) { for (MultipleExclusionOwnerModel theModel : myListeners) { if (theModel == aModel ) { continue; } Object theSelection = theModel.getSelectedItem(); // Remember selection theModel.myCurrentlyAvailable = getAvailable(theModel); theModel.fireContentsChanged(theModel, 0, theModel.myCurrentlyAvailable.size()-1); theModel.setSelectedItem(theSelection); } } public void itemStateChanged( ItemEvent e ) { MultipleExclusionOwnerModel theModel = (MultipleExclusionOwnerModel) ((JComboBox) e.getSource()).getModel(); setSelection(theModel, (String) theModel.getSelectedItem()); } } private class MultipleExclusionOwnerModel extends DefaultComboBoxModel { private ArrayList<String> myCurrentlyAvailable; private SharedDataPool myPool; public MultipleExclusionOwnerModel(SharedDataPool aPool) { myPool = aPool; myPool.addListener(this); myCurrentlyAvailable = myPool.getAvailable(this); } public int getSize() { return myCurrentlyAvailable.size(); } public Object getElementAt( int index ) { return myCurrentlyAvailable.get(index); } protected void fireContentsChanged( Object source, int index0, int index1 ) { super.fireContentsChanged(source, index0, index1); } } } [/log] Nå, det är en lösning i alla fall... [edit] Ehh...kanske inte var det snyggaste jag gjort i mitt liv, en del buggar där. Nåja, idén borde vara där i alla fall. [inlägget ändrat 2006-04-07 14:53:30 av Que]
  14. Que

    Applet

    Mmmhm, nu är inte jag så hemma på JBuilder, men man kanske måste sätta dom parametrarna någonstans när man sparkar igång appleten därunder? NullPointern får du antagligen för att Appleten inte hittar någon "img"-parameter; är img också null?
×
×
  • Skapa nytt...