Java Swing 未正确显示

标签 java swing layout

我遇到了问题...我正在尝试将组件放在面板上...但它们也没有按照我期望的方式显示。

这是一个例子...

这是代码:

package UserInterface;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.*;
/**
 *
 * @author 
 */
public class FlightPrice extends JPanel {
    private JPanel buttonPane;
    private JPanel dataPane;
    private JLabel outbound;
    private JLabel outDate;
    private JTable departFlights;
    private JLabel inbound;
    private JLabel inDate;
    private JTable returnFlights;
    private JLabel flightCost;
    private JTable priceTable;
    private JButton purchase;
    private JButton goBack;
    private JButton cancel;

     public FlightPrice()
    {
        initComponents();
    }

    private void initComponents()
    {
        BorderLayout borderLayout = new BorderLayout();
        //iniyliazing the componenets\\
        Object[][] data1 =  {{"239", "United", "8:00 AM MCO", "9:05 AM ATL", "767", "25F"}};    
        String[]  name = {"", "",}; 
        Object [][] data2 = {{"612", "United", "4:35 PM ATL", "5:45 PM MCO", "A320", "19A"}};
        String [] name2 = {"",""};
        Object [][] data3 = {{"Adult", "1", "546.00", "56.00", "602.00"}};
        String [] name3 = {"",""};

        buttonPane = new JPanel();
        dataPane = new JPanel(new GridBagLayout());
        outbound = new JLabel("Depart: Orlando TO Atlanta");
        outDate = new JLabel("Date: March 1, 2014");
        departFlights = new JTable(data1, name);
        inbound = new JLabel("Return: Atlanta TO Orlando");
        inDate = new JLabel("Date: March 19, 2014");
        returnFlights = new JTable(data2, name2);
        flightCost = new JLabel("Air Fare Cost");
        priceTable = new JTable(data3, name3);
        purchase = new JButton("Purchase");
        goBack = new JButton("goBack");
        cancel = new JButton("Cancel");

        //adds componetns to the panel\\

        GridBagConstraints c = new GridBagConstraints();
        //adding info into the tables\\
        c.fill = GridBagConstraints.HORIZONTAL;

        c.gridx = 0;
        c.gridx = 0;
        dataPane.add(outbound, c);
        c.gridx = 0;
        c.gridy = 1;
        dataPane.add(outDate, c);
        c.gridx = 0;
        c.gridy = 2;
        dataPane.add(departFlights,c);
        c.gridx = 0;
        c.gridy = 3;
        dataPane.add(inbound, c);
        c.gridx = 0;
        c.gridy = 4;
        dataPane.add(inDate, c);
        c.gridx = 0;
        c.gridy = 5;
        dataPane.add(returnFlights, c);
        c.gridx = 0;
        c.gridy = 6;
        dataPane.add(flightCost, c);
        c.gridx = 0;
        c.gridy = 7;
        dataPane.add(flightCost, c);

        // adding components to buttonPane\\
        buttonPane.add(goBack);
        buttonPane.add(purchase);
        buttonPane.add(cancel);


        //adding panels to the JFrame\\
        add(dataPane);
        add(buttonPane, BorderLayout.SOUTH);

}
}

这是一个显示扩展 JPanel 的类。它保存添加到数据 Pane 的所有组件。然后,数据 Pane 将添加到主 Pane 中。有帮助吗?

http://imageshack.com/a/img198/8795/rqnj.png

它应该是什么样子:

http://imageshack.com/a/img585/7088/83j9.png

最佳答案

您说 BorderLayout borderLayout = new BorderLayout(); 但您从未使用 this.setLayout(borderLayout) 之类的方法将该布局传递给面板。

此外,当您add(dataPane)时,我建议您应该指定位置,因为您打算使用 BorderLayout。尽管 CENTER 是默认值,但我建议使用 add(dataPane, BorderLayout.CENTER)

关于Java Swing 未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22442118/

相关文章:

java - 当 jSlider 为 100 时如何启用 jButton?

android - Uber like seek bar 安卓

java - 如何获得Jlist选定值

java - getContentPane().add 不起作用?

css - Visual Studio Code - 灰色框

android - 更改运行时添加的 ProgressBar 的宽度

java - 如何在Spring mvc登录中更改登录成功Url

java - 使 ArrayAdapter<ItemCategory> 接受 LinkedHashSet 而不是 ArrayList

java - 我怎样才能用 Action 风格改变jsp html链接

java - AWS lambda : ClassNotFoundException