Sök…


Anmärkningar

Avsluta applikationen i fönstret stäng

Det är lätt att glömma att avsluta applikationen när fönstret är stängt. Kom ihåg att lägga till följande rad.

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

Skapa ett tomt fönster (JFrame)

Skapa JFrame

Det är enkelt att skapa ett fönster. Du måste bara skapa en JFrame .

JFrame frame = new JFrame();

Titlar fönstret

Du kanske vill ge ditt fönster en titel. Du kan göra det genom att skicka en sträng när du skapar JFrame eller genom att ringa frame.setTitle(String title) .

JFrame frame = new JFrame("Super Awesome Window Title!");
//OR
frame.setTitle("Super Awesome Window Title!");

Ställa in fönsterstorlek

Fönstret blir så litet som möjligt när det har skapats. För att göra den större kan du ställa in storleken uttryckligen:

frame.setSize(512, 256);

Eller så kan du ha själva ramstorleken baserad på storleken på innehållet med metoden pack() .

frame.pack();

setSize() och pack() är ömsesidigt exklusiva, så använd det ena eller det andra.

Vad du ska göra på Window Close

Observera att programmet inte kommer att sluta när fönstret har stängts. Du kan avsluta applikationen efter att fönstret har stängts genom att JFrame att göra det.

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

Alternativt kan du be fönstret att göra något annat när det är stängt.

WindowConstants.DISPOSE_ON_CLOSE //Get rid of the window
WindowConstants.EXIT_ON_CLOSE //Quit the application
WindowConstants.DO_NOTHING_ON_CLOSE //Don't even close the window
WindowConstants.HIDE_ON_CLOSE //Hides the window - This is the default action

Skapa ett innehållsruta

Ett valfritt steg är att skapa en innehållsfönster för ditt fönster. Detta behövs inte, men om du vill göra det, skapa en JPanel och samtal frame.setContentPane(Component component) .

JPanel pane = new JPanel();
frame.setContentPane(pane);

Visar fönstret

När du har skapat den vill du skapa dina komponenter och sedan visa fönstret. Att visa fönstret är gjort som sådant.

frame.setVisible(true);

Exempel

För dig som gillar att kopiera och klistra in, här är några exempelkoder.

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane

frame.setVisible(true); //Show the window

Exempel på utgång

Lägga till komponenter

En komponent är ett slags användargränssnittselement, till exempel en knapp eller ett textfält.

Skapa en komponent

Att skapa komponenter är nästan identiskt med att skapa ett fönster. Istället för att skapa en JFrame skapar du dock den komponenten. Till exempel, för att skapa en JButton , gör du följande.

JButton button = new JButton();

Många komponenter kan skicka parametrar till dem när de skapas. Till exempel kan en knapp ges text att visa.

JButton button = new JButton("Super Amazing Button!");

Om du inte vill skapa en knapp kan en lista över vanliga komponenter hittas i ett annat exempel på den här sidan.

Parametrarna som kan skickas till dem varierar från komponent till komponent. Ett bra sätt att kontrollera vad de kan acceptera är genom att titta på parametrarna inom din IDE (Om du använder en). Standardgenvägar listas nedan.

  • IntelliJ IDEA - Windows / Linux: CTRL + P
  • IntelliJ IDEA - OS X / macOS: CMD + P
  • Eclipse: CTRL + SHIFT + Space
  • NetBeans: CTRL + P

Exempel på information om metodparametrar i IntelliJ IDEA

Visar komponenten

När en komponent har skapats skulle du vanligtvis ställa in dess parametrar. Efter det måste du sätta det någonstans, till exempel på din JFrame eller på din innehållsruta om du skapade en.

frame.add(button); //Add to your JFrame
//OR
pane.add(button); //Add to your content pane
//OR
myComponent.add(button); //Add to whatever

Exempel

Här är ett exempel på att skapa ett fönster, ställa in ett innehållsruta och lägga till en knapp i det.

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane

JButton button = new JButton("Super Amazing Button!"); //Create the button
pane.add(button); //Add the button to the content pane

frame.setVisible(true); //Show the window

Exempel på utgång

Ställa in parametrar för komponenter

Komponenter har olika parametrar som kan ställas in för dem. De varierar från komponent till komponent, så ett bra sätt att se vilka parametrar som kan ställas in för komponenter är att börja skriva componentName.set och låta dina IDE: s autofyllt (om du använder en IDE) föreslå metoder. Standardgenvägen i många IDE: er, om den inte visas automatiskt, är CTRL + Space .

Autocomplete i IntelliJ IDEA

Vanliga parametrar som delas mellan alla komponenter

Beskrivning Metod
Anger den minsta storleken som komponenten kan vara (endast om layouthanteraren respekterar egenskapen minimumSize) setMinimumSize(Dimension minimumSize)
Ställer in den största storleken som komponenten kan vara (endast om layouthanteraren respekterar egenskapen maximumSize) setMaximumSize(Dimension maximumSize)
Ställer in den perforerade storleken på komponenten (endast om layouthanteraren hedrar den förmånliga storleken) setPreferredSize(Dimension preferredSize)
Visar eller döljer komponenten setVisible(boolean aFlag)
Ställer in om komponenten ska svara på användarinmatning setEnabled(boolean enabled)
Ställer in teckensnitt för text setFont(Font font)
Ställer in texten på verktygstipset setToolTipText(String text)
Ställer in bakgrundsfärgen på komponenten setBackground(Color bg)
Ställer in förgrundsfärgen (typsnittsfärg) för komponenten setForeground(Color bg)

Vanliga parametrar i andra komponenter

Vanliga komponenter Beskrivning Metod
JLabel , JButton , JCheckBox , JRadioButton , JToggleButton , JMenu , JMenuItem , JTextArea , JTextField Ställer in den visade texten setText(String text)
JProgressBar , JScrollBar , JSlider , JSpinner Ställer in ett numeriskt värde mellan komponentens min- och maxvärden setValue(int n)
JProgressBar , JScrollBar , JSlider , JSpinner Set är det minsta möjliga värde som value kan vara setMinimum(int n)
JProgressBar , JScrollBar , JSlider , JSpinner Set är det största möjliga värdet som value kan vara setMaxmimum(int n)
JCheckBox , JToggleBox Uppsättningen är om värdet är sant eller falskt (t.ex.: Bör en kryssruta markeras?) setSelected(boolean b)

Vanliga komponenter

Beskrivning Klass
Knapp JButton
Kryssruta JCheckBox
Listrutan / kombinationsrutan JComboBox
Märka JLabel
Lista JList
Menyfältet JMenuBar
Meny i en menyfält JMenu
Objekt i en meny JMenuItem
Panel JPanel
Framstegsfält JProgressBar
Radio knapp JRadioButton
Rullningslist JScrollBar
Slider JSlider
Spinner / Number picker JSpinner
Tabell JTable
Träd JTree
Textområde / Multiline textfält JTextArea
Textfält JTextField
Verktygsfält JToolBar

Skapa interaktiva användargränssnitt

Att ha en knapp där är allt bra och bra, men vad är poängen om att klicka på den gör ingenting? ActionListener används för att berätta för din knapp eller annan komponent att göra något när den är aktiverad.

Lägga till ActionListener s görs som sådan.

buttonA.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        //Code goes here...
        System.out.println("You clicked the button!");
    }
});

Eller om du använder Java 8 eller högre ...

buttonA.addActionListener(e -> {
    //Code
    System.out.println("You clicked the button!");
});

Exempel (Java 8 och högre)

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create a pane to house all content
frame.setContentPane(pane);

JButton button = new JButton("Click me - I know you want to.");
button.addActionListener(e -> {
    //Code goes here
    System.out.println("You clicked me! Ouch.");
});
pane.add(buttonA);

frame.setVisible(true); //Show the window

Organisera komponentlayout

Att lägga till komponenter efter varandra resulterar i ett användargränssnitt som är svårt att använda, eftersom alla komponenter finns någonstans . Komponenterna beställs från topp till botten, varje komponent i en separat "rad".

För att avhjälpa detta och ge dig som utvecklare en möjlighet att enkelt LayoutManager komponenter Swing har LayoutManager s.

Dessa LayoutManagers behandlas mer utförligt i Introduktion till Layout Managers såväl som i de separata Layout Manager-ämnena:



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow