我在创建3个相同大小的面板时遇到问题,其中North面板是显示器,而南面板是显示器。中间面板分为东西两个部分,西部是文本框,用户可以输入字符串,东部是开始按钮。如何修复我的中心面板,使其与我的南北面板大小相同?
我的应用程序是什么样的:
正确的申请示例:
代码:
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class ThreadedFillDemo2 extends JFrame implements ActionListener,
Runnable {
public static final int WIDTH = 300;
public static final int HEIGHT = 200;
public static final int FILL_WIDTH = 300;
public static final int FILL_HEIGHT = 100;
public static final int CIRCLE_SIZE = 10;
public static final int PAUSE = 100; // milliseconds
private JPanel northBox;
private JPanel southBox;
public static void main(String[] args) {
ThreadedFillDemo2 gui = new ThreadedFillDemo2();
gui.setVisible(true);
}
public ThreadedFillDemo2() {
setSize(WIDTH, HEIGHT);
setTitle("Location Finder");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(3,1));
northBox = new JPanel();
southBox = new JPanel();
add(northBox);
JTextField entry = new JTextField();
JLabel entryTitle = new JLabel("Enter Postal Code");
JButton startButton = new JButton("Get Location");
startButton.addActionListener(this);
JPanel buttonPanel = new JPanel();
JPanel buttonPaneleast = new JPanel();
JPanel buttonPanelwest = new JPanel();
buttonPanel.setLayout(new GridLayout(1,2));
buttonPanelwest.setLayout(new GridLayout(2,1));
buttonPaneleast.setLayout(new GridLayout());
buttonPanelwest.add(entryTitle);
buttonPanelwest.add(entry);
buttonPaneleast.add(startButton);
buttonPanel.add(buttonPanelwest);
buttonPanel.add(buttonPaneleast);
add(buttonPanel);
add(southBox);
}
public void actionPerformed(ActionEvent e) {
startThread();
}
synchronized public void run() {
Graphics g =northBox.getGraphics();
for (int y = 0; y < FILL_HEIGHT; y = y + CIRCLE_SIZE)
for (int x = 0; x < FILL_WIDTH; x = x + CIRCLE_SIZE) {
g.fillOval(x, y, CIRCLE_SIZE, CIRCLE_SIZE);
doNothing(PAUSE);
}
}
synchronized public void startThread() {
Thread theThread = new Thread(this);
theThread.start();
}
synchronized public void doNothing(int milliseconds) {
try {
Thread.sleep(milliseconds);
} catch (InterruptedException e) {
System.out.println("Unexpected interrupt");
System.exit(0);
}
}
}