相关疑难解决方法(0)

Java swing布局

我很难确定要使用的布局.帮助任何建议.

在此输入图像描述

JPanel mainpanel = new JPanel();

public void addPanel(JPanel panel){
    mainpanel.add(panel);
}

addPanel(A);
addPanel(B);
addPanel(C);
addPanel(D);
addPanel(E);
....
Run Code Online (Sandbox Code Playgroud)

面板A,B,C,D ......的尺寸不固定.

我怎样才能做到这一点?

java layout swing layout-manager

5
推荐指数
2
解决办法
2452
查看次数

当文本发生变化时,如何阻止JLabel更改其大小?

我在代码中生成一些JComponents并使用GridBag布局来排列它们.我的布局由12行和3列组成,每行包含一个JSlider,一个JCheckBox和一个JLabel.这是我用来生成UI的代码:

final int NUM_MOTORS = 12;

// This is the panel I'm adding the components to.
pnlMotorSliders.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();

for (int i = 0; i < NUM_MOTORS; ++i) {
    c.gridy = i;

    // Create the slider
    JSlider slider = new JSlider(SwingConstants.HORIZONTAL, 10, 4085, 10);
    c.fill = GridBagConstraints.HORIZONTAL;
    c.gridx = 0;
    c.weightx = 0.9;
    pnlMotorSliders.add(slider, c);

    // Create the checkbox
    JCheckBox checkBox = new JCheckBox();
    checkBox.setOpaque(true);
    checkBox.setBackground(Color.blue);
    c.fill = GridBagConstraints.NONE;
    c.gridx = 1;
    c.weightx = 0.1;
    pnlMotorSliders.add(checkBox, …
Run Code Online (Sandbox Code Playgroud)

java swing resize jlabel gridbaglayout

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

无法在Swing中正确调整JPanel的大小

我只是学习Swing,并为自己构建了一个示例GUI作为练习.非常基本的,它在西侧,中间和东侧有三个面板JFrame.在最后一个面板中,有另一个面板和一个按钮.该小组是我的扩展JPanel,DrawPanel.Rectangle每次单击Repaint下面的按钮时,它会随机绘制.这是我的代码:

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

public class Tester
{
    public static DrawPanel panelEastDrawPanelCenter;

    public static void main()
    {
        Tester gui = new Tester();
        gui.go();
    }
    public void go()
    {
        JFrame frame = new JFrame("This is the title");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Create all the Western Panel components
        JPanel panelWest = new JPanel();
        //    panelWest.setLayout(new BorderLayout());
        JButton panelWestButtonWest = new JButton("Western-most West Button");
        JButton panelWestButtonCenter = new JButton("Western-most Center …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel layout-manager paintcomponent

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

paintComponent中的初始化不起作用

我正在做一些练习来理解Java和Swing API.为什么在Disegno构造函数中有nullPointerException?我想打印两个矩形的坐标,但它们似乎没有初始化.

import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Disegno extends JFrame{

    Disegno(){
        this.setSize(500, 500);
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        MyPanel aba = new MyPanel();
        this.setContentPane(aba);
        this.setVisible(true);

        System.out.println(aba.rect.blue.x + "-" + aba.rect.blue.y);
        System.out.println(aba.rect.yellow.x + "-" + aba.rect.yellow.y);
    }

    public static void main(String[] args){
        new Disegno();
    }
}

class MyPanel extends JPanel{

    JPanel up, down;
    RectArea rect;

    MyPanel(){
        this.setLayout(new BorderLayout());

        up = new JPanel();
        this.add(up, BorderLayout.NORTH);
        up.setBackground(Color.red);
        up.setVisible(true);

        down = new JPanel();
        down.setBackground(Color.green);
        this.add(down, BorderLayout.SOUTH);
        down.setVisible(true);

        rect = new RectArea();
        this.add(rect, BorderLayout.CENTER);

        this.setVisible(true);
    } …
Run Code Online (Sandbox Code Playgroud)

java swing

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

如何删除MiGLayout中组件之间的空间

我有一段时间没有使用MiGLayout,我不记得如何删除组件之间自动放入的空间.我尝试使用以下参数无效(请注意,我想保持水平间距):

novisualpadding

垫0

插图0

growy

这是我的意思的一个例子: 组件之间的空间

我想要的是将行分为两个.所以第一个和第二个JTextFields行之间不应该有间隙.不过,我想保持第二排和第三排之间的差距.我希望第三和第四行分组,它们之间没有任何间隙,等等.

这是我的布局代码的相关部分(这是在扩展JPanel的类中):

setLayout(new MigLayout("insets 0", "grow"));

//Code to create the JTextFields not shown as it is not relevant

    for(int i = 0; i < textFields.length; ++i) {
        for(int j = 0; j < textFields[0].length; ++j) {
            textFields[i][j].setPreferredSize(new Dimension(80, 50));

            if(j == 0 && i % 2 == 0) //If it's the first JTextField in an even row
                add(textFields[i][j], "newline, split, gaptop 5, gapright 5");
            else if(j == 0 && i % 2 != 0) …
Run Code Online (Sandbox Code Playgroud)

java swing miglayout

4
推荐指数
2
解决办法
6221
查看次数

面板满时将滚动面板添加到jpanel(java)

我正在开发Java swing应用程序,并且正在动态添加组件JPanel。我想JScrollPane在此面板上设置a ,只有当面板满了时,我们才能看到此滚动窗格。

我该怎么做:

 package add_button;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

public class MyExample 
{
    // Field members
    static JPanel panel = new JPanel();
    static Integer indexer = 1;
    static List<JLabel> listOfLabels = new ArrayList<JLabel>();
    static List<JTextField> listOfTextFields = new ArrayList<JTextField>();

    public static void main(String[] args)
    {       
        // Construct frame
        JFrame frame = …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jscrollpane

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

JPanel 添加但未“及时”显示

我有一个 JFrame,它根据您单击的 MenuItem 显示 JPanel。它可以工作,但是现在我需要在将 JPanel 添加到框架并显示它后调用一个方法(因为我在该面板内使用 JFreeChart 并且我必须chartPanel.repaint()在 JPanel 可见时调用):

this.getContentPane().add( myjpanel, BorderLayout.CENTER ); //this = JFrame
this.validate();
myjpanel.methodCalledOnceDisplayed();
Run Code Online (Sandbox Code Playgroud)

看起来没问题吗?真的myjpanel被展示了吗?好像不是:

public void methodCalledOnceDisplayed() {
    chartPanel.repaint()
}
Run Code Online (Sandbox Code Playgroud)

这不起作用(chartPanel.getChartRenderingInfo().getPlotInfo().getSubplotInfo(0)正在抛出 IndexOutOfBoundsException)。这意味着调用重绘时 JPanel 不可见,我测试了以下内容:

public void methodCalledOnceDisplayed() {
    JOptionPane.showMessageDialog(null,"You should see myjpanel now");
    chartPanel.repaint()
}
Run Code Online (Sandbox Code Playgroud)

现在它起作用了,我myjpanel在警报后面看到了,正如预期的那样,重新绘制了 chartPanel 并且没有发生异常。

编辑:SSCCE(需要 jfreechart 和 jcommon:http ://www.jfree.org/jfreechart/download.html )

导入 java.awt.BorderLayout;
导入 java.awt.EventQueue;
导入 java.awt.Font;
导入 javax.swing.JButton;
导入 javax.swing.JFrame;
导入 javax.swing.JLabel;
导入 javax.swing.JOptionPane;
导入 javax.swing.JPanel;
导入 javax.swing.border.EmptyBorder;
导入 …

java concurrency swing jfreechart event-dispatch-thread

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

GridLayout没有填充JPanel

我遇到了GridLayout的问题,并且整个JPanel没有被填充.我有一个N*M网格,我用N*M Tiles填充它(它们扩展了JPanel).添加所有这些图块后,JPanel的底部和右侧仍有空间.我认为GridLayout应该填满整个JPanel,并使其中的所有内容均匀分布?

编辑:我不想发布所有代码,因为有多个类.想到也许有一个简单的解决方案.

public class MainFrame extends JFrame {

    private static final long serialVersionUID = 3985493842977428355L;
    private final int FRAME_HEIGHT = 800;
    private final int FRAME_WIDTH = 700;

    private MainPanel mainPanel;

    public MainFrame() {
        super("Test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(FRAME_HEIGHT, FRAME_WIDTH);
        setLocationRelativeTo(null);    
        mainPanel = new MainPanel();
        getContentPane().add(mainPanel);
        setVisible(true);
    }
}

public class MainPanel extends JPanel {
    /**
     * 
     */
    private static final long serialVersionUID = 3421071253693531472L;

    private RoutePanel routePanel;
    private ControlPanel controlPanel;
    private GridBagConstraints gridBagConstraints;
    private GridBagLayout gridBagLayout;

    public MainPanel() {
        routePanel = …
Run Code Online (Sandbox Code Playgroud)

java swing

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

JTextArea在对话框调整大小时突然调整大小

我有使用问题JTextArea.我的实际设置不同,但效果仍然存在.这是问题的图像:

在此输入图像描述

拥有的JDialog大小仅比JTextArea其首选大小所需的大约1个像素的那一刻,文本区域突然调整大小.在我的实际设置中,它们突然长高.我正在使用a GridBagLayout,但它似乎发生在其他布局中.为什么是这样?

以下是重现上述效果的易于编译的代码.

import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.*;
import javax.swing.text.JTextComponent;

public class TextDemo extends JDialog implements ActionListener {
    private static final long serialVersionUID = -589374238138963529L;
    protected JTextField textField;
    protected JTextArea textArea;
    private final static String newline = "\n";

    private static final java.awt.Dimension SCREENSIZE = 
            java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    private static final java.awt.Point SCREENCENTER =
        new java.awt.Point(SCREENSIZE.width/2,SCREENSIZE.height/2);

    public TextDemo(Window owner, String shortMessage, String message, JComponent accessory) {
        super(owner);

        setTitle("Test");
        setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);

        Icon …
Run Code Online (Sandbox Code Playgroud)

java layout swing jtextarea

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

JScrollPane不适用于我的JPanel

首先,我必须说我已经检查了这些问题,但没有找到我的答案:

1,2 , 3,4, 5,6, 7

还有很多其他问题

我也检查了这些教程和示例:

1 , 9,10,11

和许多其他网站.但我无法解决我的问题.

这是我的代码的简单类型:

public class Question extends JFrame {
public Question() {
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setLayout(new BorderLayout());
    setSize(d.width, d.height);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    panel.setPreferredSize(new Dimension(d.width, d.height));
    panel.setBorder(BorderFactory.createLineBorder(Color.red));
    panel.setLayout(new BoxLayout(panel, 1));
    for (int i = 0; i < 100; i++) {
        panel.add(new JButton("kjdh"));
    }
    JScrollPane scrollPane = new JScrollPane(panel);
    scrollPane.setPreferredSize(new Dimension(500, 500));
    getContentPane().add(scrollPane);
    getContentPane().add(panel);
    setVisible(true); …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jframe jscrollpane

4
推荐指数
2
解决办法
7454
查看次数