标签: preferredsize

如何更改JTable标题高度?

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

java swing jtable jtableheader preferredsize

16
推荐指数
1
解决办法
3万
查看次数

仅当JTable适合视口时才启用JTable的自动调整大小

我需要在JScrollPane中创建一个带有可调整大小的列的JTable(当用户增加列宽时 - 出现水平滚动条).为此,我有用table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);.此外,当视口宽度足以包含整个表格时 - 列应该拉伸以填充视口宽度.为了实现这一点,我有getScrollableTracksViewportWidth()JTable类的覆盖方法如下:

@Override
public boolean getScrollableTracksViewportWidth() {
    return getPreferredSize().width < getParent().getWidth();
}
Run Code Online (Sandbox Code Playgroud)

这种方法很有效,除了一件事:当我第一次尝试调整列的大小时,它返回自己的宽度以开始位置.如果我快速调整列大小并释放鼠标表继续工作正常.那么,这种行为的原因是什么?为什么表尝试调整大小,即使getScrollableTracksViewportWidth()返回false?或者,也许,你可以提出更好的解决方案来实现这样的调整大小模式?

贝娄是上述问题的简单工作示例:

import javax.swing.*;

public class TestTable {
    private static Object[][] data = new Object[][] {
            { "a", "b", "c" },
            { "d", "e", "f" }
    };
    private static Object[] colNames = new Object[] { "1", "2", "3" };

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JTable table = new JTable(data, colNames) …
Run Code Online (Sandbox Code Playgroud)

java swing jtable preferredsize jviewport

13
推荐指数
1
解决办法
5235
查看次数

JDesktopPane按内容设置的首选大小

我一直试图JDesktopPane通过可调整大小的GUI和滚动窗格来很好地工作,但是我遇到了一些麻烦.似乎除非拖动模式是大纲,否则桌面窗格将不会按预期调整大小(当内部框架被拖动超出桌面窗格的边缘时),因此不会产生滚动条.

在此输入图像描述

我在这个来源做一些非常愚蠢的事吗?我错过了一个更好的方法吗?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class MDIPreferredSize {

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                final JDesktopPane dt = new JDesktopPane() {

                    @Override
                    public Dimension getPreferredSize() {
                        Dimension prefSize = super.getPreferredSize();
                        System.out.println("prefSize: " + prefSize);
                        // inititialize the max to the first normalized bounds
                        Rectangle max = getAllFrames()[0].getNormalBounds();
                        for (JInternalFrame jif : this.getAllFrames()) {
                            max.add(jif.getNormalBounds());
                        }
                        System.out.println("maxBounds(): "
                                + max); …
Run Code Online (Sandbox Code Playgroud)

java swing jscrollpane jdesktoppane preferredsize

10
推荐指数
1
解决办法
1774
查看次数

JEdi​​torPane.getPreferredSize并不总是在Java 9中工作?

这个问题是关于JEditorPaneJava 8和Java 9中的不同行为.我想知道其他人是否经历过相同的事情,是否它可能是Java 9中的一个错误,如果可能的话,你有如何在Java中处理它的输入9.

上下文:在我们(古老的)代码库中,我们使用的是子类JTable,并且在我们使用的子类之一的列中呈现多行HTML JEditorPane.我们JEditorPane.getPreferredSize()用于确定内容的高度并使用它来设置表格行的高度.它已经运作了很多年.它在Java 9中不起作用; 行显示只有10个像素高.在Windows和Mac上都可以看到.

我想向您展示两个代码示例.如果第一个和更短的一个适合您,请随意跳过第二个和更长的一个.

MCVE:

    JEditorPane pane = new JEditorPane("text/html", "");

    pane.setText("<html>One line</html>");
    System.out.println(pane.getPreferredSize());
    pane.setText("<html>Line one<br />Line 2<br />Third line<br />Line four</html>");
    System.out.println(pane.getPreferredSize());
Run Code Online (Sandbox Code Playgroud)

Java 8(1.8.0_131)中的输出:

java.awt.Dimension[width=48,height=15]
java.awt.Dimension[width=57,height=60]
Run Code Online (Sandbox Code Playgroud)

在Java 9(jdk-9.0.4)上:

java.awt.Dimension[width=49,height=15]
java.awt.Dimension[width=58,height=0]
Run Code Online (Sandbox Code Playgroud)

在Java 9中,我第一次设置文本时,首选高度反映了它.以后每次都没有.

我已经搜索过,看看我是否能找到任何可能导致此问题的错误信息,但没有发现任何相关内容.

问题:这是否意图(改变)行为?这是一个错误?

更长的例子

public class TestJEditorPaneAsRenderer extends JFrame {

    public TestJEditorPaneAsRenderer() {
        super("Test JEditorPane");

        MyRenderer renderer = new MyRenderer();

        String html2 = "<html>one/2<br />two/2</html>";
        String html4 = "<html>one of four<br />two of four<br />"
                + …
Run Code Online (Sandbox Code Playgroud)

java swing jeditorpane preferredsize java-9

10
推荐指数
1
解决办法
263
查看次数

JFrame大小太小

我在netbeans中创建了一个JFrame.但是当我运行程序时,Jframe的大小太小了.这是我的代码.

import javax.swing.JFrame;    

public class Window {

    private static void demo()
    {
        JFrame frame =new JFrame();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
       javax.swing.SwingUtilities.invokeLater(new Runnable(){
      public void run()
      {
          demo();
      }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

输出窗口看起来像这样.

java swing jframe preferredsize

8
推荐指数
1
解决办法
1万
查看次数

自动调整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();

    }
}
Run Code Online (Sandbox Code Playgroud)

尺寸是正确的我猜,但表格列仍然都有相同的宽度!该表是嵌入在GridBagLayout中的ScrollPane中的那个问题?谢谢你的任何建议.

java swing jtable tablecolumn preferredsize

8
推荐指数
3
解决办法
3万
查看次数

使用Autolayout和/或PreferredFontForTextStyle时,UITextview会随机剪辑

Autolayout将随机剪辑我的UITextView中的文本.当您从横向到纵向来回旋转时,它会更改UITextContainerView的大小.它会正常工作几次,但会随机更改容器并剪切静态文本.

如果我禁用Autolayout,那么问题就会消失.如果我删除preferredFontForTextStyle代码并保持Autolayout,它似乎也会消失.

问题是我想让用户设置文本大小并能够使用自动布局.文本都是静态的,所以这应该是一件简单的事情.

有没有人见过这个?这是一个错误还是必须做错误的事情?

为了尝试找出问题,我已经将代码缩小到尽可能小.

这是代码

//  BugTest_ViewController.h
//
//
//
//

#import <UIKit/UIKit.h>

@interface BugTest_ViewController : UIViewController



@property (weak, nonatomic) IBOutlet UIImageView *image1;

@property (weak, nonatomic) IBOutlet UITextView *text1;



@end
Run Code Online (Sandbox Code Playgroud)

//  BugTest_ViewController.m
//
//
//  
//

#import "BugTest_ViewController.h"

@interface BugTest_ViewController ()


@end

@implementation BugTest_ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
   
}

-(void)viewWillAppear:(BOOL)animated
{

    self.text1.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
    [self.text1 setContentOffset:CGPointZero animated:YES];
    
}
Run Code Online (Sandbox Code Playgroud)

当视图看起来应该是Good Container时,这是 容器

这是查看视图时的容器. 坏容器剪辑我的文本

ios autolayout preferredsize uicontainerview

7
推荐指数
1
解决办法
1302
查看次数

防止JList自动调整大小

我在JScrollPane中有一个JList,它放在一个JPanel(BorderLayout.CENTER)中,然后放在另一个JPanel的BorderLayout.EAST(这个JPanel的CENTER包含另一个JPanel)中,整个JPanel放在一个JTabbedPane中.最初,它看起来像这样: 初始JList GUI

现在我在列表中添加一些书籍:

JList里面有一些书

如果我转到另一个标签然后回来,会发生这种情况:

调整大小的JList

我不明白的是,包含JList的JPanel都设置了最小和最大大小:

JPanel listPanel = new JPanel();
listPanel.setLayout(new BorderLayout());
listPanel.add(new JScrollPane(bookList), BorderLayout.CENTER);
listPanel.setMinimumSize(listPanel.getPreferredSize());
listPanel.setMaximumSize(listPanel.getPreferredSize());
checkOutPanel.add(listPanel, BorderLayout.EAST);
Run Code Online (Sandbox Code Playgroud)

如何防止JList自动调整大小?

java user-interface swing jlist preferredsize

6
推荐指数
1
解决办法
2591
查看次数

Swing:为JDialog设置固定的窗口大小

我尝试了setPrefferedSizesetSize方法,但对话框仍以最小尺寸打开.

private void method() {
    commandDialog.setPreferredSize(new Dimension(100,100));
    - - - 
    - - -   //Components added to dialogPanel

    commandDialog.add(dialogPanel);

    // Tried this as well: commandDialog.setSize(40, 40);     
    commandDialog.validate();
    commandDialog.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)

java layout swing jdialog preferredsize

6
推荐指数
2
解决办法
2万
查看次数

java不合理的jtextfield大小调整问题

我已经搜索过这样的所有问题,但我找不到解决方案.

public class FormPanel extends JPanel
{
    private JLabel namelabel;
    private JLabel occlabel;
    private JTextField nametext;
    private JTextField occtext;
    private JButton okButton;

    public FormPanel() {
        Dimension dim = getPreferredSize();
        dim.width = 250;
        setPreferredSize(dim);
        namelabel = new JLabel("Name : ");
        occlabel = new JLabel("Occupation : ");
        nametext = new JTextField();
        nametext.setPreferredSize(new Dimension(80,20));
        occtext = new JTextField();
        occtext.setColumns(20);
        okButton = new JButton("OK");

        Border inner = BorderFactory.createTitledBorder("Add Person : ");
        Border outer = BorderFactory.createEmptyBorder(5,5,5,5);

        setBorder(BorderFactory.createCompoundBorder(inner,outer));
        setLayout(new GridBagLayout());
        GridBagConstraints gc = new GridBagConstraints();
        gc.gridx …
Run Code Online (Sandbox Code Playgroud)

java swing jtextfield gridbaglayout preferredsize

6
推荐指数
1
解决办法
78
查看次数