2017-07-24 22 views
3

我有三個JButton s,兩個JLabel s和一個JTextField在我的程序和JPanelFlowLayout。我想在JPanel的開始和的JPanel結束休息安排三個按鈕。我需要的三個按鈕,最後三個組件之間的空間,但代碼不能正常工作。誰能幫我?如何安排JComponents在頂部和底部的JPanel

這是代碼:

JPanel panelMenu=new Jpanel(new FlowLayout()) 
panelMenu.add (btnOpen); 
panelMenu.add (lblPage); 
panelMenu.add (txtCurrentPage); 
panelMenu.add (lblTotalPage); 
panelMenu.add (btnBackword); 
panelMenu.add (btnNext); 
getContentPanel.add(panelMenu); 
+3

本教程是正確的開端:https://docs.oracle.com/javase/tutorial/uiswing/ –

回答

2

FlowLayout類放部件在一排。爲了得到你想要的東西,你可以使用GridBagLayout

示例代碼:

import java.awt.CardLayout; 
import java.awt.Color; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Insets; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class LayoutExamle { 
    JFrame frame; 
    JPanel panel; 
    JButton b1, b2, b3; 
    JLabel l1, l2; 
    JTextField t1; 

    GridBagConstraints constraints; 

    public LayoutExamle(){ 
     initComp(); 
    } 

    public void initComp(){ 
     frame = new JFrame("Example"); 
     frame.setLayout(new CardLayout()); 

     panel = new JPanel(); 

     panel.setSize(400, 350); 
     panel.setLayout(new GridBagLayout()); 
     panel.setBackground(Color.WHITE); 

     constraints = new GridBagConstraints(); 

     b1 = new JButton("<<"); 
     constraints.gridx = 0; 
     constraints.gridy = 0; 
     constraints.gridwidth = 2; 
     constraints.anchor = GridBagConstraints.NORTHWEST; 
     constraints.insets = new Insets(12, 43, 0, 0); 
     panel.add(b1, constraints); 

     b2 = new JButton("Open"); 
     constraints.gridx = 2; 
     constraints.gridy = 0; 
     constraints.gridwidth = 2; 
     constraints.anchor = GridBagConstraints.NORTHWEST; 
     constraints.insets = new Insets(12, 18, 0, 0); 
     panel.add(b2, constraints); 

     b3 = new JButton(">>"); 
     constraints.gridx = 4; 
     constraints.gridy = 0; 
     constraints.anchor = GridBagConstraints.NORTHWEST; 
     constraints.insets = new Insets(12, 12, 0, 0); 
     panel.add(b3, constraints); 

     l1 = new JLabel("jLabel1"); 
     constraints.gridx = 0; 
     constraints.gridy = 1; 
     constraints.anchor = GridBagConstraints.NORTHWEST; 
     constraints.insets = new Insets(234, 43, 12, 0); 
     panel.add(l1, constraints); 

     l2 = new JLabel("jLabel1"); 
     l2.setText("jLabel2"); 
     constraints.gridx = 2; 
     constraints.gridy = 1; 
     constraints.anchor = GridBagConstraints.NORTHWEST; 
     constraints.insets = new Insets(234, 18, 12, 0); 
     panel.add(l2, constraints); 

     t1 = new JTextField(); 
     constraints.gridx = 4; 
     constraints.gridy = 1; 
     constraints.gridwidth = 2; 
     constraints.ipadx = 130; 
     constraints.anchor = GridBagConstraints.NORTHWEST; 
     constraints.insets = new Insets(230, 12, 12, 31); 
     panel.add(t1, constraints); 

     frame.add(panel); 
     frame.pack(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     new LayoutExamle(); 
    } 
} 

截圖:

enter image description here

+0

感謝您的B I已經得到了答案 – Meshu

+1

@Meshu所以,如果它是爲你工作,你能接受這個答案,所以後來人也有所幫助。不過,很高興爲您提供幫助。 – Blasanka

1

的一種方式是創建兩個面板。然後您可以將面板添加到框架,其默認的內容窗格使用BorderLayout的:

frame.add(topPanel, BorderLayout.PAGE_START); 
frame.add(bottomPanel, BorderLayout.PAGE_END);