[英]Resizing JPanel Form in NetBeans GUI Builder
I have a JPanel Form in Netbeans and it has Jlists, JTextFields and JPanels on it. 我在Netbeans中有一个JPanel表单,上面有Jlists,JTextFields和JPanels。 I want to divide the JFrame into four (or six or eight...) parts and place this JPanel Form into each of them.
我想将JFrame分为四个(或六个或八个...)部分,然后将此JPanel表单放入每个部分。 I visualized the job i want to do here .
我想象了我想在这里完成的工作 。
I tried BorderLayout, GridLayout and GridBagLayout. 我尝试了BorderLayout,GridLayout和GridBagLayout。 However in any of them the JPanel and the components(Jlists, JTextFields and JPanels on it) don't change their size and shows only a part of it.
但是,在其中的任何一个中,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);
}
I believe this code snippet will help you to achieve what you are trying to achieve. 我相信此代码段将帮助您实现所要实现的目标。 Understand that a Component can only have 1 parent (ie added only once) and that adding it multiple times to the same
Container
is the same as removing it and adding it again 了解一个组件只能有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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.