Yzma Skrevet 19. mars 2010 Del Skrevet 19. mars 2010 Hei. Kjapt spørsmål. Programmerer GUI'et til en kalender, og lurer på hvordan jeg skal få til å plassert noe i det øvre høyre hjørnet av et panel (ønsker tall på hver dag av kalendervisningen, foreløpig er de plassert i midten, helt til høyre) Jeg vet at jeg kan bruke BorderLayout til å plassere noe i sentum, øst, vest, nord eller sør, men er usikker på hvordan jeg skal få til plassering i et hjørne når nummeret er det eneste jeg vil ha i panelet. Lenke til kommentar
dejanV Skrevet 20. mars 2010 Del Skrevet 20. mars 2010 (endret) Etter litt frem og tilbake endte jeg opp med dette: import java.awt.Color; import java.awt.Font; import javax.swing.GroupLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class PanelExample extends JFrame{ private JPanel example; //panelet vi bruker private JLabel text1; //teksten vi bruker //konstruktøren public PanelExample(){ super("Panel Eksempel"); example = new JPanel(); //her lager vi panelet text1 = new JLabel(); //her er labelen som skal inneholde teksten //setter bakgrunnsfarge på teksten og panelet for å skille dem ut example.setBackground(Color.gray); text1.setBackground(Color.yellow); //mer tekst-label tilpasning text1.setHorizontalAlignment((int) LEFT_ALIGNMENT); text1.setFont(new Font("Times New Roman",0,48)); text1.setText("1"); text1.setVerticalAlignment((int) TOP_ALIGNMENT); text1.setOpaque(true); //I denne følgende koden som jeg snappet fra NetBeans, så lager den //layout på denne måten: //For panel layout GroupLayout panelLayout = new GroupLayout(example); example.setLayout(panelLayout); panelLayout.setHorizontalGroup( panelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addGroup(panelLayout.createSequentialGroup() .addComponent(text1)) ); panelLayout.setVerticalGroup( panelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addGroup(panelLayout.createSequentialGroup() .addComponent(text1)) ); //------------------------------------------------------------------------------------------ //For layout GroupLayout layout = new GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(example, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(example, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); //------------------------------------------------------------------------------------------ setSize(200, 200); //sett vindustørrelse setDefaultCloseOperation(EXIT_ON_CLOSE); //lukk vinduet etter avslutning setVisible(true); //gjør vinduet synlig } //start eksempelet public static void main(String[] args) { new PanelExample(); } } Jeg anbefaler deg å bruke NetBeans sin "JFrame form" verktøy for å opprette kalenderen din i. Den er lett å bruke og skriver koden for deg mens du designer programmet ditt i realtime. Mulig at også andre IDE-er har slike verktøy men jeg har kun erfaring med NetBeans. Lykke til! Endret 20. mars 2010 av dejanV Lenke til kommentar
Yzma Skrevet 23. mars 2010 Forfatter Del Skrevet 23. mars 2010 (endret) takk for svar! fant også ut at jeg kunne putte inn et argument til i JLabel (JLabel.RIGHT), og angi BorderLayout.NORTH, så gjorde det samme nytten =) private class CalendarDays extends JPanel{ public CalendarDays(int dayOfMonth){ setLayout(new BorderLayout()); String dayOfMonthString = Integer.toString(dayOfMonth); JLabel fillDayOfMonth = new JLabel(dayOfMonthString, JLabel.RIGHT); add(fillDayOfMonth, BorderLayout.NORTH); } } Endret 23. mars 2010 av Yzma 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å