JPanel调整大小没有发生
Posted
技术标签:
【中文标题】JPanel调整大小没有发生【英文标题】:JPanel Resize not happening 【发布时间】:2013-10-20 13:56:26 【问题描述】:final JPanel gui = new JPanel(new BorderLayout(2,3));
JPanel guiCenter = new JPanel(new BorderLayout(2,3));
JPanel buttonConstrsint = new JPanel(new FlowLayout(FlowLayout.CENTER));
JButton getQuotesButton = new JButton("Get Quotes..");
getQuotesButton.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
JTable table = new JTable(generateRandomTableModel());
JScrollPane pane = new JScrollPane(table);
guiCenter.add(pane, BorderLayout.SOUTH);
//guiCenter.setVisible(true);
gui.add(guiCenter,BorderLayout.CENTER);
gui.setPreferredSize(new Dimension(400,400));
gui.revalidate();
gui.repaint();
);
buttonConstrsint.add(getQuotesButton);
guiCenter.add(buttonConstrsint,BorderLayout.NORTH);
// gui.add(labelFields,BorderLayout.NORTH);
gui.add(guiCenter,BorderLayout.CENTER);
JOptionPane.showMessageDialog(null, gui);
谁能帮助我为什么我的 gui 面板无法调整大小,当我加载表格时,我希望它会自动展开。
【问题讨论】:
再次,请努力创建和发布sscce,这是一个我们可以编译、运行、修改并希望能帮助您纠正的小程序。 这里真的需要一个 JOptionPane,为什么不只是一个对话框? @user905374,为什么要使用 JDialog?然后您需要编写所有侦听器来处理“确定”、“关闭”按钮等。JOptionPane 在一个语句中为您完成所有这些。 @camickr 好的,我习惯了 JDialogs,我只使用 JOptionPane 进行快速提示。我不知道它可以这样使用。 您真的打算将pane
(JScrollPane)添加到guiCenter
的BorderLayout.SOUTH 位置吗? BorderLayout 边缘(而不是中心)中的组件不会水平和垂直拉伸。
【参考方案1】:
这是我认为您正在尝试做的一个示例:
另外请看看JTable的使用方法和JOptionPane的使用方法
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class Test2
public static void main(String[] args)
final JPanel gui = new JPanel(new BorderLayout(2, 3));
JPanel buttonConstrsint = new JPanel(new FlowLayout(FlowLayout.CENTER));
JButton getQuotesButton = new JButton("Get Quotes..");
buttonConstrsint.add(getQuotesButton);
gui.add(buttonConstrsint, BorderLayout.NORTH);
getQuotesButton.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
String[] columnNames = "First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian";
Object[][] data =
"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false),
"John", "Doe",
"Rowing", new Integer(3), new Boolean(true),
"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false),
"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true),
"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)
;
JTable table = new JTable(data, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
gui.add(scrollPane, BorderLayout.CENTER);
gui.revalidate();
gui.repaint();
);
JOptionPane jOptionPane = new JOptionPane(gui);
JDialog dialog = jOptionPane.createDialog(new JFrame(), "title");
dialog.setSize(200, 200);
dialog.show();
【讨论】:
这很好,但我仍然没有在桌子上看到滚动条。你的测试显示滚动条,但我没有,可能是因为我将表 guicenter 和 guicenter 添加到 gui 窗格?以上是关于JPanel调整大小没有发生的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GridBagLayout 中调整 JPanel 的大小?