[英]fixing the size of a JTextField within a GUI
我有以下代碼來創建 GUI。 我遇到的問題是 JTextField 似乎隨着 GUI 的大小調整而擴展。
我希望 JTextField 保持與擴大 GUI 相同的大小。 JTextField 似乎也位於控制面板的底部,而不是頂部。 我如何控制這個?
有人可以提供一些直升機:
public class HtmlDemo extends JPanel
implements ActionListener {
JLabel theLabel;
JTextArea htmlTextArea;
private boolean bLastName = false;
private boolean bNickName = false;
private boolean bMarks = false;
private JFreeChart chart;
private ChartPanel chartPanel;
private JLabel date1Label, date2Label,date3Label,date4Label;
private JTextField date1Field, date2Field,date3Field,date4Field;
private JButton button,button1;
private Container window;
// public createChart stackedChart = new createChart();
public XYPlot plot1;
private JPanel panel, panel1,panel3,panel4;
public HtmlDemo() {
setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
chart = createChart(null);
chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(1060, 370));
chartPanel.setMouseZoomable(true, false);
//panel4.add(chartPanel);
htmlTextArea = new JTextArea(10, 20);
//htmlTextArea.setText(initialText);
JScrollPane scrollPane = new JScrollPane(chartPanel);
theLabel = new JLabel() {
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
public Dimension getMinimumSize() {
return new Dimension(200, 200);
}
public Dimension getMaximumSize() {
return new Dimension(200, 200);
}
};
theLabel.setVerticalAlignment(SwingConstants.CENTER);
theLabel.setHorizontalAlignment(SwingConstants.CENTER);
JPanel leftPanel = new JPanel();
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.PAGE_AXIS));
leftPanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(
"Rolling Demand"),
BorderFactory.createEmptyBorder(10,10,10,10)));
leftPanel.add(scrollPane);
leftPanel.add(Box.createRigidArea(new Dimension(0,10)));
//leftPanel.add(changeTheLabel);
JPanel rightPanel = new JPanel();
rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.PAGE_AXIS));
rightPanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Controls"),
BorderFactory.createEmptyBorder(10,10,10,10)));
rightPanel.add(theLabel);
button = new JButton();
date1Label = new JLabel("Enter Start Date");
rightPanel.add(date1Label);
date1Field = new JTextField(5);
rightPanel.add(date1Field);
date2Label = new JLabel("Enter End Date");
rightPanel.add(date2Label);
date2Field = new JTextField(5);
rightPanel.add(date2Field);
panel1 = new JPanel();
date3Label = new JLabel("Enter comparator Start Date");
rightPanel.add(date3Label);
date3Field = new JTextField(5);
rightPanel.add(date3Field);
date4Label = new JLabel("Enter comparator End Date");
rightPanel.add(date4Label);
date4Field = new JTextField(5);
rightPanel.add(date4Field);
button.setText("Get Data");
rightPanel.add(button);
setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
add(leftPanel);
add(Box.createRigidArea(new Dimension(10,0)));
add(rightPanel);
}
private JFreeChart createChart(final XYDataset dataset)
{
// System.out.println("hello");
return ChartFactory.createTimeSeriesChart(
"Test",
"Seconds",
"Value",
dataset,
false,
false,
false);
}
//React to the user pushing the Change button.
public void actionPerformed(ActionEvent e) {
theLabel.setText(htmlTextArea.getText());
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event dispatch thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("HtmlDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add content to the window.
frame.add(new HtmlDemo());
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event dispatch thread:
//creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Turn off metal's use of bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE);
createAndShowGUI();
}
});
}
}
布局根據大小控制放置的內容。 只要你有一個布局,它總是會調整大小。 大多數時候,您希望這種行為發生,但禁用簡單地說
parentContainer.setLayout(null);
這稱為 null 布局。 注意我放了parentContainer
因為你有一堆文本字段所以我不知道你想要哪個。
然后您可以使用textField.setBounds(x, y, width, height)
來指定位置。
但我建議您不要使用 null 布局。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.