我遇到了问题...我正在尝试将组件放在面板上...但它们也没有按照我期望的方式显示。
这是一个例子...
这是代码:
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 中。有帮助吗?
它应该是什么样子:
最佳答案
您说 BorderLayout borderLayout = new BorderLayout();
但您从未使用 this.setLayout(borderLayout)
之类的方法将该布局传递给面板。
此外,当您add(dataPane)
时,我建议您应该指定位置,因为您打算使用 BorderLayout。尽管 CENTER 是默认值,但我建议使用 add(dataPane, BorderLayout.CENTER)
。
关于Java Swing 未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22442118/