Java JTextArea赢得';除非调整JFrame的大小,否则无法更新
每当我运行我的程序时,我的JTextArea并不遵循我给它的维度,但是如果我调整JFrame的大小,它就会更新并将其大小设置为我所放置的大小 问题是什么Java JTextArea赢得';除非调整JFrame的大小,否则无法更新,java,swing,jframe,layout-manager,jtextarea,Java,Swing,Jframe,Layout Manager,Jtextarea,每当我运行我的程序时,我的JTextArea并不遵循我给它的维度,但是如果我调整JFrame的大小,它就会更新并将其大小设置为我所放置的大小 问题是什么 public ControlPanel() { // create our list of players list = new JList(model); // create our scroll panes userspane = new JScrollPane(list); console
public ControlPanel() {
// create our list of players
list = new JList(model);
// create our scroll panes
userspane = new JScrollPane(list);
consolepane = new JScrollPane(console);
// set sizes
userspane.setSize(100, 500);
jta.setSize(100, 500);
list.setSize(100, 500);
consolepane.setSize(100, 500);
console.setSize(100, 500);
// add to panel
panel.add(userspane, BorderLayout.CENTER);
panel.add(kick);
panel.add(ban);
panel.add(info);
panel.add(consolepane, BorderLayout.CENTER);
// set frame properties
setTitle("RuneShadows CP");
setSize(280, 400);
//setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setContentPane(panel);
setVisible(true);
}
不要将尺寸设置为任何值
- 对于
您可以使用构造函数JTextArea
JTextArea(int行,int字符空间)
- 只需使用
JFrame,它将尊重内部组件的所有首选尺寸pack()
- 另外,不要将内容窗格设置为面板,只需添加面板即可。这将在调用
时考虑面板的首选大小pack()
JTextArea
构造函数和pack
ed
编辑后未设置大小
import java.awt.BorderLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class ControlPanel extends JFrame {
JScrollPane userspane;
JList list;
DefaultListModel model = new DefaultListModel();
JScrollPane consolepane;
JTextArea console = new JTextArea(20, 50);
JTextArea jta = new JTextArea(6, 50);
JPanel panel = new JPanel();
JButton kick = new JButton("Kick");
JButton ban = new JButton("Ban");
JButton info = new JButton("Info");
public ControlPanel() {
// create our list of players
list = new JList(model);
// create our scroll panes
userspane = new JScrollPane(list);
consolepane = new JScrollPane(console);
// add to panel
panel.add(userspane, BorderLayout.CENTER);
panel.add(kick);
panel.add(ban);
panel.add(info);
panel.add(consolepane, BorderLayout.CENTER);
add(panel);
pack();
setTitle("RuneShadows CP");
//setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new ControlPanel();
}
});
}
}
更新-带定位
还请记住,使用
BorderLayout
时,您需要为添加的每个组件指定一个位置,否则它将默认为CENTER
,并且每个位置只有一个组件。我注意到您试图向中心添加两个组件
import java.awt.BorderLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class ControlPanel extends JFrame {
JScrollPane userspane;
JList list;
DefaultListModel model = new DefaultListModel();
JScrollPane consolepane;
JTextArea console = new JTextArea(20, 50);
JTextArea jta = new JTextArea(6, 50);
JPanel panel = new JPanel(new BorderLayout());
JButton kick = new JButton("Kick");
JButton ban = new JButton("Ban");
JButton info = new JButton("Info");
public ControlPanel() {
// create our list of players
list = new JList(model);
// create our scroll panes
userspane = new JScrollPane(list);
consolepane = new JScrollPane(console);
// add to panel
panel.add(userspane, BorderLayout.SOUTH);
JPanel buttonPanel = new JPanel();
buttonPanel.add(kick);
buttonPanel.add(ban);
buttonPanel.add(info);
panel.add(buttonPanel, BorderLayout.CENTER);
panel.add(consolepane, BorderLayout.NORTH);
add(panel);
pack();
setTitle("RuneShadows CP");
//setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new ControlPanel();
}
});
}
}
“问题是什么?”-您正在将大小设置为所有大小。只需
.pack()
并让它为您调整大小。我使用了pack(),但第二个JTextBox的大小仍然不正确。谢谢!:)按照我的要求得到它。请记住,使用BorderLayout
时,您需要为添加的每个组件指定一个位置,否则它将默认为CENTER
,并且每个位置只有一个组件。我注意到您试图向中心添加两个组件
请正确使用边框布局
定位查看我的更新