2016-02-16 40 views
0

我在Netbeans中有一個JPanel窗體,它上面有Jlists,JTextFields和JPanels。我想將JFrame分成四個(或六個或八個......)部分,並將這個JPanel表單放入其中。我想象了我想要做的工作here在NetBeans GUI Builder中調整JPanel窗體的大小

我試過BorderLayout,GridLayout和GridBagLayout。但是在其中的任何一個JPanel和組件(Jlists,JTextFields和JPanels)都不會改變它們的大小,只顯示它的一部分。

public class DynamicLineAndTimeSeriesChart extends ApplicationFrame implements ActionListener { 

private TimeSeries series; 
private double lastValue = 100.0; 
private Timer timer = new Timer(10000, this); 
GaugePanel panel; //*****That's the JPanel form I created by using NetBeans***** 
//Note that GaugePanel extends javax.swing.JPanel 
final ChartPanel chartPanel;//*****Since I need an xy-graph, I import jfree library 
private Timer timer2 = new Timer(10000, this); 
GaugePanel panel2; 
final ChartPanel chartPanel2; 

/** 
* Constructs a new dynamic chart application. 
* 
* @param title the frame title. 
*/ 
public DynamicLineAndTimeSeriesChart(final String title) throws IOException { 
    super(title); 
    JFrame.setDefaultLookAndFeelDecorated(true); 
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    setSize(screenSize.width, screenSize.height); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.series = new TimeSeries("Random Data", Millisecond.class); 
    JPanel bigpanel=new JPanel(); 
    GridLayout experimentLayout = new GridLayout(2,2); 
    bigpanel.setLayout(experimentLayout); 

    final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);    
    final JFreeChart chart = createChart(dataset); 
    timer.setInitialDelay(1000); 
    chart.setBackgroundPaint(Color.LIGHT_GRAY); 
    panel = new GaugePanel(); 
    panel.init(); 
    chartPanel = new ChartPanel(chart); 
    panel.getjPanel1().add(chartPanel); 
    chartPanel.setPreferredSize(new java.awt.Dimension(367, 336)); 
    bigpanel.add(panel); 
    timer.start(); 
    panel.setVisible(true); 
    chartPanel.setVisible(true); 

    final TimeSeriesCollection dataset2 = new TimeSeriesCollection(this.series);    
    final JFreeChart chart2 = createChart(dataset2); 
    timer2.setInitialDelay(1000); 
    chart2.setBackgroundPaint(Color.LIGHT_GRAY); 
    panel2 = new GaugePanel(); 
    panel2.init(); 
    chartPanel2 = new ChartPanel(chart2); 
    panel2.getjPanel1().add(chartPanel2); 
    chartPanel2.setPreferredSize(new java.awt.Dimension(367, 336)); 
    bigpanel.add(panel2); 
    timer2.start(); 
    panel2.setVisible(true); 
    chartPanel2.setVisible(true); 

    setContentPane(bigpanel); 

    repaint(); 
    setVisible(true); 
} 

回答

1

我相信這段代碼將幫助你實現你正在努力實現的目標。要知道,一個組件只能有1個父(即只加一次),並多次將其添加到同一個Container相同刪除它,然後重新添加

JFrame f = new JFrame("Test"); 
f.getContentPane().setLayout(new GridLayout(2,2)); 
Color[] colors = new Color [Color.RED, COLOR.GREEN, COLOR.BLUE, COLOR.BLACK]; 
for (int i = 0; i < 4; i++) { 
    JPanel jp = new JPanel(); 
    jp.setBackground(colors[i]; 
    f.getContentPane().add(jp); 
} 
+0

我其實創建不同的組件,沒」添加相同的東西。我編輯了我的問題並添加了我的代碼(我沒有第一次寫它,因爲它太複雜了,但理解起來更好)。 –