South_Bridge Skrevet 4. februar 2007 Del Skrevet 4. februar 2007 (endret) Har en oppgave hvor jeg skal lage en grafisk kalender. Jeg kan det å gjøre det i "consol style" siden det er et eksempel fra boka vår(KåreJava, s105). Men jeg får det ikke til grafisk. Så oppgaven er enkel, jeg skal lage en grafisk kalender og trenger litt hjelp. Jeg sitter fast ved at jeg ikke vet hvordan jeg skal få generert frem en kalender... Endret 7. februar 2007 av South_Bridge Lenke til kommentar
krigun Skrevet 4. februar 2007 Del Skrevet 4. februar 2007 Har en oppgave hvor jeg skal lage en grafisk kalender. Jeg kan det å gjøre det i "consol style" siden det er et eksempel fra boka vår(KåreJava, s105). Men jeg får det ikke til grafisk. Så oppgaven er enkel, jeg skal lage en grafisk kalender og trenger litt hjelp. Jeg sitter fast ved at jeg ikke vet hvordan jeg skal få generert frem en kalender... 7868325[/snapback] Du får det ikke til grafisk? Hva har du gjort til nå da? Lenke til kommentar
pgdx Skrevet 4. februar 2007 Del Skrevet 4. februar 2007 Tror du må komme med noen konkrete spørsmål... Lenke til kommentar
OnkelSjolf Skrevet 5. februar 2007 Del Skrevet 5. februar 2007 Tror du må komme med noen konkrete spørsmål... 7869176[/snapback] Jeg holder faktisk på med akkurat samme oppgaven hehe Har vel forsåvidt samme problem stillingen. Hvordan får jeg "tegnet" en kalender på et panel i en frame? Jeg kan vise koden jeg har så langt: import java.awt.Button; import java.util.Calendar; import java.util.GregorianCalendar; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; public class Program { public static void main(String[] args) { JPanel pmonth = new JPanel(); pmonth.add(new JLabel("År:")); pmonth.add( new JTextField(5) ); pmonth.add(new JLabel("Måned:")); pmonth.add( new JTextField(10) ); Button knapp=new Button("Vis"); pmonth.add(knapp); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new java.awt.GridLayout(12, 1)); frame.getContentPane().add(pmonth); frame.setSize(500, 500); frame.setVisible(true); GregorianCalendar kalender=new GregorianCalendar(); int month=kalender.get(Calendar.MONTH); int today=kalender.get(Calendar.DAY_OF_MONTH); kalender.set(Calendar.DAY_OF_MONTH, 1); int weekday= kalender.get(Calendar.DAY_OF_WEEK); System.out.println("Søn Man Tir Ons Tor Fre Lør"); for(int i=Calendar.SUNDAY; i< weekday; i++) System.out.println(" "); do { int day=kalender.get(Calendar.DAY_OF_MONTH); System.out.printf("%3d", day); if(day==today) // marker dagen idag med ei stjerne System.out.print("*"); else System.out.print(" "); if(weekday== Calendar.SATURDAY) //starter ei ny linje etter hver lørdag System.out.println(); kalender.add(Calendar.DAY_OF_MONTH, 1); // går videre til neste dag weekday=kalender.get(Calendar.DAY_OF_WEEK); } while (kalender.get(Calendar.MONTH)==month); // avslutter loopen når kalender er dag 1 av neste måned if(weekday !=Calendar.SUNDAY) System.out.println(); // printer ut siste linja om nødvendig. JPanel pkalender= new JPanel(); JTextArea jta=new JTextArea(); // knapp.addActionListener( // new ActionListener(){ // public void actionPerformed(ActionEvent e){ // String year=e.get(kalender); // String month="måned her";)} } } Her får jeg opp ei ramme med 2 tekstfelt..samt en knapp som foreløpig ikke gjør noe. Selve kalenderen vises nå bare i "console" vinduet...så jeg lurer på hvordan får jeg denne inn i selve rammen min ? På forhånd takk :!: Lenke til kommentar
Kizzaz Skrevet 5. februar 2007 Del Skrevet 5. februar 2007 Slitter selv med den oppgave...sliter med å printe kalenderen opp på hovedrammen... Lenke til kommentar
OnkelSjolf Skrevet 6. februar 2007 Del Skrevet 6. februar 2007 Slitter selv med den oppgave...sliter med å printe kalenderen opp på hovedrammen... 7876058[/snapback] Såvidt jeg kan se det for meg skal det gå med å samle kalenderen opp i en String som til slutt printes i selva jpanel inni ramma ellerno..menne litt usikker på hvordan jeg går fram for å få hele kalenderen inn i stringen.. Noen forslag? Lenke til kommentar
South_Bridge Skrevet 6. februar 2007 Forfatter Del Skrevet 6. februar 2007 (endret) Jeg har fått til slik at kalenderen vises i et JTextArea... ordna det med en string. før for mekker du en String temp = ""; og så bare setter du temp += med alt som egentlig skulle ha System.out funksjon. Jeg får ikke til actionlisteneren Endret 6. februar 2007 av South_Bridge Lenke til kommentar
___ Skrevet 6. februar 2007 Del Skrevet 6. februar 2007 (endret) Noen forslag: Istedetfor å putte all koden inn i main()-metoden, burde du heller lage en constructor, og ha koden der. I tillegg burde du definere feltene (Swing-komponentene slik at de kan nås fra alle metoder i klassen din. ActionListener er et interface, og dette må programmet ditt implementere hvis du skal få det til å virke. Du må også legge inn metoden actionPerformed i klassen, siden interfacet krever dette. Har skrevet litt kode for å illustrere hva jeg mener. Fyll på med den koden dere allerede har laget. import java.awt.Button; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Calendar; import java.util.Formatter; import java.util.GregorianCalendar; import java.util.Locale; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; public class Program implements ActionListener { JPanel pmonth; JPanel pkalender; JTextArea jta; Button knapp; String kalenderTekst; public Program() { pmonth = new JPanel(); pmonth.add(new JLabel("År:")); pmonth.add( new JTextField(5) ); pmonth.add(new JLabel("Måned:")); pmonth.add( new JTextField(10) ); knapp=new Button("Vis"); knapp.addActionListener(this); pmonth.add(knapp); ...og så videre... } public void actionPerformed(ActionEvent evt) { GregorianCalendar kalender=new GregorianCalendar(); int month=kalender.get(Calendar.MONTH); int today=kalender.get(Calendar.DAY_OF_MONTH); kalender.set(Calendar.DAY_OF_MONTH, 1); ...masse kode som dere har laget tidligere... jta.setText(kalenderTekst); // Sette kalenderteksten i tekst-boksen } public static void main(String[] args) { Program program = new Program(); // Denne linja starter det hele } } Hilsen Werner Endret 6. februar 2007 av wernie Lenke til kommentar
South_Bridge Skrevet 7. februar 2007 Forfatter Del Skrevet 7. februar 2007 (endret) takk for hjelpa werner! Men jeg har et lite spm, kalenderen med labels, textfield samt knappen er oppe å kjøre. men slik som koden min er nå henter den kun det jeg setter d.set(Calendar.MONTH) og mekker en kalender. Jeg vil jo lage kalender ut ifra hva brukeren taster i textfield. hvordan får jeg til det? public void actionPerformed(ActionEvent evt) { GregorianCalendar d=new GregorianCalendar(); int month = d.get(Calendar.MONTH); // <-- HER VIL JEG HA INPUT int today = d.get(Calendar.DAY_OF_MONTH); d.set(Calendar.DAY_OF_MONTH, 1); int weekday = d.get(Calendar.DAY_OF_WEEK); String temp = ""; temp += "MON TUE WED THU FRI SAT SUN\n"; for(int i = Calendar.MONDAY; i < weekday; i++) { temp += " "; } do { int day = d.get(Calendar.DAY_OF_MONTH); temp += day; if (day == today) temp += "* "; else temp += " "; if (day >= 1 && day <= 8) temp += " "; if (weekday == Calendar.SUNDAY) temp += "\n"; d.add(Calendar.DAY_OF_MONTH, 1); weekday = d.get(Calendar.DAY_OF_WEEK); } while (d.get(Calendar.MONTH) == month); if (weekday != Calendar.SATURDAY) temp += "\n"; jta.setText(temp); } Endret 7. februar 2007 av South_Bridge Lenke til kommentar
___ Skrevet 7. februar 2007 Del Skrevet 7. februar 2007 Det greieste ville vel vært å bruke en dropdown som inneholdt navn på månedene. Når du så valgte måned, kunne du bruke indeksen til valgt element til å sette måneden med. Dagen i måneden kan du vel hente med getText()-metoden til tekstboksen. Hilsen Werner Lenke til kommentar
South_Bridge Skrevet 7. februar 2007 Forfatter Del Skrevet 7. februar 2007 (endret) LØST: måtte rette på while løkka mi som fremdeles henta month fra Calendar.MONTH som jeg sletta la til dette i public program public program { pmonth.add(new JLabel("Måned:")); MonthCombo = new JComboBox(); MonthCombo.setEditable(true); MonthCombo.addItem("Januar"); MonthCombo.addItem("Februar"); MonthCombo.addItem("Mars"); MonthCombo.addItem("April"); MonthCombo.addItem("Mai"); MonthCombo.addItem("Juni"); MonthCombo.addItem("Juli"); MonthCombo.addItem("August"); MonthCombo.addItem("September"); MonthCombo.addItem("Oktober"); MonthCombo.addItem("November"); MonthCombo.addItem("Desember"); pmonth.add(MonthCombo); og får å få tak i dette la jeg til dette i public void actionPerformed(ActionEvent evt) { d.set(Calendar.MONTH, MonthCombo.getSelectedIndex()); Den gir meg masse error, feks at java.awt.EventDispatchThread.run(Unknown Source). Jeg kan legge hele koden i en pastebin om det er ønskelig Endret 7. februar 2007 av South_Bridge Lenke til kommentar
South_Bridge Skrevet 7. februar 2007 Forfatter Del Skrevet 7. februar 2007 (endret) et annet problem dukket opp da for(int i = Calendar.MONDAY; i < weekday; i++) { temp += " "; } do { int day = d.get(Calendar.DAY_OF_MONTH); temp += day; if (day == today) temp += "* "; else temp += " "; if (day < 10) temp += " "; if (weekday == Calendar.SUNDAY) temp += "\n"; d.add(Calendar.DAY_OF_MONTH, 1); weekday = d.get(Calendar.DAY_OF_WEEK); } while (d.get(Calendar.MONTH) == MonthCombo.getSelectedIndex()); Alle mnd vises nå fint, MEN mnd som begynner på en søndag blir 1. i mdn flyttet til mandag og 2. i mnd til neste mandag LØST Endret 7. februar 2007 av South_Bridge Lenke til kommentar
Kizzaz Skrevet 12. februar 2007 Del Skrevet 12. februar 2007 Jeg har fått til knappen bra nå...men er det noen som har en quick liten kode eller forklaring på hvordan jeg skal få til kalenderen. har prøvd det som står i boka men ellers sitter jeg helt fast, for jeg får ingenting opp Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå