相关疑难解决方法(0)

JToggleButton截断标签文本

在a中使用时Windows 7 JToolBar,JToggleButton有时会截断其标签文本.

请参阅下面的代码中的示例.以大写字母开头的切换按钮'W'将被截断; 一个以空格(或甚至是小写'w')开头的人不会.

这只发生在Windows?有人可以解释为什么会这样吗?

// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6386636

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

/////////////////////// new class

public class Truncation_Example extends JToolBar {

   private static final long serialVersionUID = 1L;

   /////////////////////// object attributes

   JToggleButton toggle_Good;
   JToggleButton toggle_Bad;

   /////////////////////// constructors

   public Truncation_Example() {
      toggle_Good = new JToggleButton(new Action_Good());
      toggle_Bad = new JToggleButton(new Action_Bad());

      this.add(toggle_Good);
      this.add(toggle_Bad);
   }

   /////////////////////// …
Run Code Online (Sandbox Code Playgroud)

java swing label jtogglebutton

9
推荐指数
1
解决办法
638
查看次数

Java swing setMaximumSize不起作用

可能重复:
setMaximumSize在java中不起作用

我的JFrame子类遇到了问题.我需要设置最大高度.

但是setMaximumSize不起作用.这似乎是java中的一个错误(setMinimumSize工作).如何防止a JFrame高于给定高度?

java swing jframe

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

获取JFrame内容的实际大小

我得到一个JFrame,我想显示一个带有边框的JLabel,填充可能是50px.当我将JFrame的大小设置为750,750,并将JLabel的大小设置为650,650并将位置设置为50,50时,它显示它很奇怪...这是我的代码:

public class GUI {

    /**
     * Declarate all 
     */
    public int height = 750;
    public int width = 750;

    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (screen.width / 2) - (width / 2); // Center horizontally.
    int y = (screen.height / 2) - (height / 2); // Center vertically.

    /**
     * Create the GUI
     */
    JFrame frame = new JFrame();
    Border border = LineBorder.createBlackLineBorder();
    JLabel label = new JLabel();    

    public GUI(){
        label.setBorder(border);
        label.setSize(700, 700);
        label.setLocation(0, 0);

        frame.getContentPane().setLayout(null);
        frame.add(label);
    } …
Run Code Online (Sandbox Code Playgroud)

java swing

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

如何在Java中设置文本字段的高度和宽度?

我试图让我的JTextField填充宽度并为其设置高度但仍然失败.我尝试添加代码setPreferredSize(new Dimension(320,200));但仍然失败.有什么方法可以让我的JTextField填充宽度并将高度设置为200或其他什么?

java swing jtextfield jcreator

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

JScrollPane中JPanel上的JTextArea没有正确调整大小

我想实现以下目标:

+------------------Other container(s)-----------------+
|        +------JScrollPane (vertical)-------+        |
|        | JTextField                        |        |
|        | Box.createRigidArea (vertical)    |        | 
|        | JTextArea                         |        |
|        | { etc.. any other J-component }   |        |
|        |                                   |        |
|        |                                   |        |
|        |                                   |        |
|        |                                   |        |
|        +-----------------------------------+        |
+-----------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

我能得到的最接近的是以下(伪)代码:

JPanel container = new JPanel(new BorderLayout());
JPanel innerContainer = new JPanel();
innerContainer.setLayout(new BoxLayout(_innerContainer, BoxLayout.Y_AXIS));
JScrollPane scrollPane = new JScrollPane(innerContainer);
container.add(scrollPane, BorderLayout.NORTH);
Run Code Online (Sandbox Code Playgroud)

每当我想添加组件时,它们都会添加到内部容器中:

innerContainer.add(new JTextField());
innerContainer.add(Box.createRigidArea(new Dimension(0, …
Run Code Online (Sandbox Code Playgroud)

java swing awt jscrollpane jtextarea

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

如何使用BoxLayout在容器内设置组件大小

面对使用BoxLayout的问题

在我的示例中,我尝试降低文本字段的高度并更改按钮的宽度(如图中的绿色标记所示).我知道setPrefferedSize()和setMaximumSize()技术,但它没有按预期工作.行添加(Box.createHorizo​​ntalGlue())也没有帮助.

谢谢你的想法

public class Testy extends JPanel {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                constructGUI();
            }
        });
    }

    private static void constructGUI() {
        JFrame frame = new JFrame("Testy");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel centerPanel = new JPanel();
        centerPanel.setBackground(Color.DARK_GRAY);
        centerPanel.setPreferredSize(new Dimension(100, 400));
        frame.add(centerPanel, BorderLayout.CENTER);

        Testy eastPanel = new Testy();
        frame.add(eastPanel, BorderLayout.EAST);

        frame.pack();
        frame.setVisible(true);
    }

    public Testy() {
        setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

        JButton button = new JButton("Button ...... 1");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        button = new JButton("Button 2"); …
Run Code Online (Sandbox Code Playgroud)

java layout swing layout-manager boxlayout

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

JTextField固定高度

JTextField当Frame最大化时,如何获得固定高度?我希望它看起来与Ubuntu上的Skype应用程序类似.

private JTextField username;
private JPasswordField password;
private JLabel usernamelabel;
private JLabel passwordlabel;
public LoginPanel(){


    setSize(200,200);
    setLayout(new GridLayout(4,4));
    setBackground(new Color(85,153,187));
    setBorder(BorderFactory.createEmptyBorder(70, 70, 70, 70));
    username = new JTextField();
    password = new JPasswordField();
    usernamelabel= new JLabel("Username");
    passwordlabel= new JLabel("Password");
    username.setBounds(5, 5, 100, 100);
    username.setPreferredSize(new Dimension(80,20));
    password.setPreferredSize(new Dimension(80,20));
    add(usernamelabel);
    add(username);
    add(passwordlabel);
    add(password);
Run Code Online (Sandbox Code Playgroud)

java size swing jtextfield

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

在jsplitpane中的jscrollpane中调整canvas的问题

我正在使用NetBeans GUI编辑器创建一个应用程序,我希望在其中有一个JSplitPane,其顶部组件将Canvas在a中JScrollPane,而底部组件将是a JTextArea或类似的东西.

当我向下拉分隔器,从而增加顶部组件的大小时,一切似乎都调整得很好.

当我试图向上推动分频器时出现问题:分频器似乎在Canvas(也可能在它下面JScrollPane)下方.

我试图首选/最小/最大的尺寸的各种组合JScrollPaneCanvas,但似乎没有任何工作.

这是Netbeans生成的代码的一部分,可能与手头的问题有关:

jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
canvas1 = new java.awt.Canvas();
jTextField1 = new javax.swing.JTextField();

jSplitPane1.setDividerLocation(300);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

jScrollPane1.setViewportView(canvas1);

jSplitPane1.setTopComponent(jScrollPane1);

jTextField1.setText("jTextField1");
jSplitPane1.setRightComponent(jTextField1);
Run Code Online (Sandbox Code Playgroud)

由于这是我的第一个问题,我不允许在问题中嵌入图像,因此我将发布链接:

红色箭头表示分隔线的位置.

在此先感谢您的时间.

java swing jscrollpane jsplitpane

7
推荐指数
2
解决办法
7837
查看次数

不可调整大小的窗口边框和定位

如果我创建不可调整大小的JFrame,并启用Windows Aero setLocation似乎没有正确考虑窗口边框.

在下面的代码中,我希望第二帧位于第一帧的右侧,而不是边框​​重叠.如果禁用Aero,或者我删除了setResizable对此的调用,则按预期完成.

import java.awt.Rectangle;
import javax.swing.JFrame;
public class FrameBorders {
public static void main(String[] args) {
    JFrame frame1 = new JFrame("frame 1");
    JFrame frame2 = new JFrame("frame 2");

    frame1.setResizable(false);
    frame2.setResizable(false);

    frame1.setVisible(true);        
    Rectangle bounds = frame1.getBounds();      
    frame2.setLocation(bounds.x+bounds.width, bounds.y);
    frame2.setVisible(true);

}
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么或这是一个错误?如何在没有重叠边框的情况下并排显示2个不可调整的对话框?

编辑:添加了截图(也将frame2更改为JDialog而不是JFrame)

Aero On: Aero On

Aero Off: Aero Off

Aero On但可调整大小: Aero On但可调整大小

java windows swing aero absolutelayout

7
推荐指数
2
解决办法
3943
查看次数

使2个JButton大小相等

我有两个JButton文本"Ok"和"Cancel".我用它GridBagLayout来对齐它们JDialog.我把锚设置为GridBagConstraints.CENTER.由于文本"Ok"和"Cancel"中字符数的不同,按钮的大小不同.如何正确对齐它们,使它们每个都具有相同的大小.我试过以下但没有用.

okayButton.setSize(cancelButton.getSize());
Run Code Online (Sandbox Code Playgroud)

java swing jbutton layout-manager gridbaglayout

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