我在GUI中做了一个布局,但它没有用,所有组件都是一个接一个地出现。
这是我的代码:
import javax.swing.*;
public class main extends JFrame {
public main() {
try {
add(new FYP_Tx.GUI());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800, 600);
setLocationRelativeTo(null);
setTitle("FYP Video Platform");
setResizable(true);
setVisible(true);
} catch (Exception e) {
System.out.println("Exception: " + e.toString());
}
}
public static void main(String[] args) {
new main();
}
}
public class GUI extends JPanel implements Runnable, ActionListener, ItemListener {
private JButton btnStart, btnStop, btnPause, btnFile;
private JLabel lblDisplay, lblSNR, lblStatus, lblConfig;
private JCheckBox chkLoop, chkNeg;
private Thread animator;
private JFileChooser fileChooser;
private JList lstML;
private JTextField txtSNR;
private boolean pauseAnimator, loop;
Matlab_options matlab = new Matlab_options();
public GUI() {
GroupLayout guiLayout = new GroupLayout(this);
lblDisplay = new JLabel();
lblStatus = new JLabel();
lblConfig = new JLabel();
lblSNR = new JLabel("SNR: ");
btnStart = new JButton("Start");
btnStop = new JButton("Stop");
btnPause = new JButton("Pause");
btnFile = new JButton("Open File");
chkLoop = new JCheckBox("Loop");
chkNeg = new JCheckBox("Negative SNR");
txtSNR = new JTextField(3);
txtSNR.setText("10");
lblDisplay.setDoubleBuffered(true);
btnStart.setEnabled(false);
btnStop.setEnabled(false);
btnPause.setEnabled(false);
btnStart.setActionCommand("start");
btnStop.setActionCommand("stop");
btnPause.setActionCommand("pause");
btnFile.setActionCommand("file");
guiLayout.setAutoCreateContainerGaps(true);
guiLayout.setAutoCreateGaps(true);
GroupLayout.SequentialGroup hGroup = guiLayout.createSequentialGroup();
GroupLayout.SequentialGroup vGroup = guiLayout.createSequentialGroup();
hGroup.addGroup(guiLayout.createParallelGroup().addComponent(lblDisplay));
hGroup.addGroup(guiLayout.createParallelGroup().addComponent(btnStart).addComponent(btnStop).addComponent(btnPause).addComponent(chkLoop));
hGroup.addGroup(guiLayout.createParallelGroup().addComponent(btnFile).addComponent(chkLoop));
guiLayout.setHorizontalGroup(hGroup);
vGroup.addGroup(guiLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lblDisplay).addComponent(btnStart).addComponent(btnFile));
vGroup.addGroup(guiLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(btnStop).addComponent(chkLoop));
guiLayout.setVerticalGroup(vGroup);
btnStart.addActionListener(this);
btnStop.addActionListener(this);
btnPause.addActionListener(this);
btnFile.addActionListener(this);
chkLoop.addItemListener(this);
chkNeg.addItemListener(this);
}
public void addNotify() {
super.addNotify();
loop = false;
lblDisplay.setSize(400, 400);
lblDisplay.setVisible(true);
animator = new Thread(this);
}
public void paint(Graphics g) {
super.paint(g);
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
`
答案 0 :(得分:3)
您是否必须为JPanel设置Layoutmanager?
public GUI() {
GroupLayout guiLayout = new GroupLayout(this);
this.setLayout(guiLayout);
......
}