Tag: preferredsize

在JScrollPane和JPanel中设置JTable的大小,使用JFrame的大小

我希望表格的宽度与帧的宽度相同,当我调整帧的大小时,表格也需要resize。 我认为JTable setSize()无法正常工作。 你能帮助我吗? import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingUtilities; public class Main extends JFrame { public Main() { setSize(400, 600); String[] columnNames = {“A”, “B”, “C”}; Object[][] data = { {“Moni”, “adsad”, 2}, {“Jhon”, “ewrewr”, 4}, {“Max”, “zxczxc”, 6} }; JTable table = new JTable(data, columnNames); JScrollPane tableSP […]

如何设置JMenuItem的大小?

正如你所看到的,拥有这些JMenuItem很难看。 菜单项的宽度非常小。 这是代码: JMenu menuOne=new JMenu(“MenuOne”); JMenu menuTwo=new JMenu(“MenuTwo”); JMenu menuThree=new JMenu(“MenuThree”); JMenu menuFour=new JMenu(“MenuFour”); JMenuBar mbar=new JMenuBar(); //add the menu to menubar mbar.add(menuOne); JMenuItem OneItOne=new JMenuItem(“1”); JMenuItem OneItTwo=new JMenuItem(“2″); menuOne.add(OneItOne); menuOne.addSeparator(); menuOne.add(OneItTwo); mbar.add(menuTwo); mbar.add(menuThree); mbar.add(menuFour); setJMenuBar(mbar); 只需在String中添加一些空格即可(例如”1 ” ),但有没有更好的方法来设置JMenuItem的首选长度? 我尝试过OneItTwo.setSize() ,但失败了。

自动调整Jtable列以适合内容

我试图根据里面的数据匹配JTable列宽。 我的代码: for(int column = 0; column < gui.testsuiteInfoTable.getColumnCount(); column ++){ int width =0; for (int row = 0; row < gui.testsuiteInfoTable.getRowCount(); row++) { TableCellRenderer renderer = gui.testsuiteInfoTable.getCellRenderer(row, column); Component comp = gui.testsuiteInfoTable.prepareRenderer(renderer, row, column); width = Math.max (comp.getPreferredSize().width, width); System.out.println(width); } TableColumn col = new TableColumn(); col = gui.testsuiteInfoTable.getColumnModel().getColumn(column); System.out.println(width); col.setWidth(width); gui.testsuiteInfoTable.revalidate(); } } […]

调整JTable的大小以适应行数

我有一个动态填充的JTable ,我希望表总是resize以适应行数。 我不希望任何滚动,因为表格在面板中,需要打印面板的内容。 我试过这个: Dimension d = itemsTable.getPreferredSize(); //scrollPane.setPreferredSize(new Dimension(d.width,itemsTable.getRowHeight()*itemsTable.getRowCount()+10)); itemsTable.setPreferredScrollableViewportSize(new Dimension(d.width,itemsTable.getRowHeight()*itemsTable.getRowCount()+1)) 但它似乎没有用。 public void getDetails(PosView pv){ Connection con = con(); DefaultTableModel model = (DefaultTableModel)pv.getItemsTable().getModel(); String date = null; double total = 0.0, paid = 0.0; try{ ps = con.prepareStatement(“SELECT DISTINCT AMOUNT_PAYABLE, AMOUNT_PAID, BALANCE, DATE FROM SALES WHERE PAYMENT_ID = ?”); ps.setString(1, paymentId); rs = […]

如何在java中设置JPanel的大小

我的java代码中有一个JPanel,我想设置它的大小,我使用了JPanel.setSize(500,500); 和JPanel.setSize(new Dimension(500,500)); 但两者都不起作用。 请告诉我如何设置JPanel的大小?

BorderLayout只显示一个对象

我决定编写一个小型Java程序来试验BorderLayout,因为我正在开发一个Java游戏,我需要同时将2个对象放在一个JFrame中,我问的每个人都说我需要BorderLayout这样做。 所以我编写的Java程序应该在JFrame上放置一个JButton,并且放置一个图形组件(在这种情况下是一个矩形)。 问题是,只有按钮显示,如下面的图像链接所示: http://prntscr.com/3m5ek6 由于我的低声誉统计数据,我无法发布实际图像。 这是代码: main.java – >主方法类+ JFrame / JPanel / JButton构造函数 import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class main { public static void main(String[] args) { Infout m = new Infout(); JFrame f = new JFrame(); JPanel start = new JPanel(); JPanel start2 = new JPanel(); start.add(m); start2.add(new JButton(“Hi”)); […]

在JFrame中调整JTabbedPane中的JScrollPane大小

我从这篇文章中了解到, 不要在JComponent上设置大小 ,不要在任何组件上设置首选大小,而是让布局管理器为您执行此操作。 我的问题是,我有一个JPanel,我将JTabbedPane放入这样的JFrame中 JFrame frame=new JFrame(); JTabbedPane pane=new JTabbedPane(); pane.addTab(“Tab 1”,new JScrollPane(getJPanel1())); pane.addTab(“Tab 2”,new JScrollPane(getJPanel2())); frame.setContentPane(pane); 现在,在这种情况下,JTabbedPane将采用您添加到其中的最大大小组件的大小。 因此,我的JScrollPane根本没有显示出来。 我需要设置JScrollPane的首选大小,如果我没有设置它,滚动条将不会出现,内容将被削减。 如何使用布局管理器来解决此问题。 我想具体做到这一点: 使JFrame / JTabbedPane / JPanelInTab扩展到屏幕的高度(进入窗口的任务栏),如果选项卡内容将被剪切,则应显示滚动条。 框架的宽度应与JTabbedPane完全一致。 编辑 这是一个MVCE,显示了我想要做的事情。 我根据peeskillet的建议包括了这些变化,但是没有效果 import javax.swing.*; import java.awt.*; public class ScrollPaneTest { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame=new […]

如何更改JTable标题高度?

标题解释了这个问题。 我怎么能轻易做到这一点?

JFrame是可缩放(错误)大小调整问题

我打算制作一个ContentPanel为600×600的JFrame,我希望JFrame不会重新resize。 在这个盒子里面,我绘制了一个600×600的红色轮廓矩形,以确保在运行程序时所有内容都匹配。 在限制JFrame的大小调整之前,我通过执行以下操作来设置JFrame的大小: getContentPane().setPreferredSize( new Dimension(600,600)); pack(); 当我启动程序时,我的矩形边界与JFrame的尺寸完全吻合。 但是,当我将isResizable(false)添加到等式中时,我的矩形的右边缘和矩形的底边之间似乎存在像素缓冲区。 通过一些试验和错误,似乎isResizable(false)为高度和宽度增加了10个像素。 (因此,对于contentPane +额外10的维度为590×590是我的解决方法) 我的问题为什么会这样? 我似乎无法在任何地方找到关于额外10个像素的任何文档? 注意:通过在不修改大小的情况下制作JFrame也可以观察到此exception。 在不使其不可resize的情况下,没有可观察的panel / contentPane,但是当使用isResizable(false)时,面板/窗格中有可见部分。

仅当JTable适合视口时才启用JTable的自动resize

我需要在JScrollPane中创建一个带有可resize的列的JTable(当用户增加列宽时 – 出现水平滚动条)。 为此,我使用table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 。 此外,当视口宽度足以包含整个表格时 – 列应该拉伸以填充视口宽度。 为了实现这一点,我重写了JTable类的getScrollableTracksViewportWidth()方法,如下所示: @Override public boolean getScrollableTracksViewportWidth() { return getPreferredSize().width < getParent().getWidth(); } 这种方法很有效,除了一件事:当我第一次尝试调整列的大小时,它返回自己的宽度以开始位置。 如果我快速调整列并释放鼠标表继续工作正常。 那么,这种行为的原因是什么? 为什么表尝试resize,即使getScrollableTracksViewportWidth()返回false? 或者,也许,你可以提出更好的解决方案来实现这样的resize模式? 贝娄是上述问题的简单工作示例: import javax.swing.*; public class TestTable { private static Object[][] data = new Object[][] { { “a”, “b”, “c” }, { “d”, “e”, “f” } }; private static Object[] colNames = […]