Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java swing最小化和扩展jPanel_Java_Swing_Netbeans_Jpanel_Minimize - Fatal编程技术网

java swing最小化和扩展jPanel

java swing最小化和扩展jPanel,java,swing,netbeans,jpanel,minimize,Java,Swing,Netbeans,Jpanel,Minimize,这个程序是一个实验,使jPanel移动位置和大小,然后再次使用滑动(触摸屏)返回 这是一幅画面:在任何事情之前,在最小化之后,然后在最大化之后。 第一个和第三个应该相同,但不相同 对于我正在使用的代码,我看不出文本位置发生变化的原因,它只是文本,而不是其他 编辑:刚刚发现如果我最小化实际程序并将其最大化,面板将被更正,因此可能是绘图问题(因此我尝试了repaint()),但没有产生任何影响。知道是什么导致了这一切吗 我的工作代码示例: import java.awt.Color; import

这个程序是一个实验,使jPanel移动位置和大小,然后再次使用滑动(触摸屏)返回

这是一幅画面:在任何事情之前,在最小化之后,然后在最大化之后。 第一个和第三个应该相同,但不相同

对于我正在使用的代码,我看不出文本位置发生变化的原因,它只是文本,而不是其他

编辑:刚刚发现如果我最小化实际程序并将其最大化,面板将被更正,因此可能是绘图问题(因此我尝试了
repaint()
),但没有产生任何影响。知道是什么导致了这一切吗

我的工作代码示例:

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Toolkit;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JPanel;

public class TestExample extends javax.swing.JFrame {

    public TestExample() {
        initComponents();
    }
    @SuppressWarnings("unchecked")                       
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel3.setText("A Text Line");
        jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 0, -1, -1));

        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 20, 90, 50));

        jButton1.setText("Test");
        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton1MouseClicked(evt);
            }
        });
        getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, -1, -1));

        pack();
    }                    

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
   JPanel p = jPanel1;
    int div = 5;
    if(small == true) {//SWIPE LEFT
        small = false;
        p.setSize(dim);
            for(Component c : p.getComponents()) {//maximize
                c.setSize(dim);
                c.setLocation(location.get(c));
            }
        p.setLocation(ploc);
    } else if( small == false) {//SWIPE RIGHT
        small = true; 
        ploc = p.getLocation();
        dim = p.getSize();
        for(Component c : p.getComponents()) {
            location.put(c, c.getLocation());
        }
        for(int i = p.getWidth()/div;i<p.getWidth();i++) {//minimize X coordinate
            Dimension d = new Dimension(p.getWidth()-i, p.getHeight());
            p.setSize(d);
            for(Component c : p.getComponents()) {
                c.setSize(d);
            }
        }
        for(int i = p.getHeight()/div;i<p.getHeight();i++) {//minimize Y coordinate
            Dimension d = new Dimension(p.getWidth(), p.getHeight()-i);
            p.setSize(d);
            for(Component c : p.getComponents()) {
                c.setSize(d);

            }
        }

        for(int i = p.getX(); i < Toolkit.getDefaultToolkit().getScreenSize().getWidth(); i++)p.setLocation(i-p.getWidth(), p.getY());//move to left hand side
    }

    }                                     
int previousX,previousY;
int xMouse,yMouse;
boolean small = false;
Dimension dim = null;
Map<Component,Point> location = new HashMap<>();
Point ploc = null;
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TestExample().setVisible(true);
            }
        });
    }                
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;               
}
导入java.awt.Color;
导入java.awt.Component;
导入java.awt.Dimension;
导入java.awt.Point;
导入java.awt.Toolkit;
导入java.util.HashMap;
导入java.util.Map;
导入javax.swing.JPanel;
公共类TestExample扩展了javax.swing.JFrame{
公共测试示例(){
初始化组件();
}
@抑制警告(“未选中”)
私有组件(){
jPanel1=newjavax.swing.JPanel();
jLabel3=newjavax.swing.JLabel();
jButton1=newjavax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
可设置大小(假);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
setBorder(javax.swing.BorderFactory.createLineBorder(新java.awt.Color(0,0,0));
setLayout(neworg.netbeans.lib.awtextra.AbsoluteLayout());
jLabel3.setText(“文本行”);
add(jLabel3,neworg.netbeans.lib.awtextra.AbsoluteConstraints(20,0,-1,-1));
getContentPane().add(jPanel1,new org.netbeans.lib.awtextra.AbsoluteConstraints(120,20,90,50));
jButton1.setText(“测试”);
jButton1.addMouseListener(新java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt){
jButton1MouseClicked(evt);
}
});
getContentPane().add(jButton1,new org.netbeans.lib.awtextra.AbsoluteConstraints(20,20,-1,-1));
包装();
}                    
私有void jButton1MouseClicked(java.awt.event.MouseEvent evt){
JPanel p=jPanel1;
int div=5;
如果(small==true){//向左滑动
小=假;
p、 设置大小(dim);
对于(组件c:p.getComponents()){//最大化
c、 设置大小(dim);
c、 setLocation(location.get(c));
}
p、 定位(ploc);
}如果(small==false){//向右滑动
小=真;
ploc=p.getLocation();
dim=p.getSize();
对于(组件c:p.getComponents()){
location.put(c,c.getLocation());
}

对于(int i=p.getWidth()/div;i编写一个布局管理器并定义组件的约束要更快地获得更好的帮助,请发布一个(最小的完整测试和可读示例)@MadProgrammer因为它是使用netbean的gui生成器制作的,所以布局管理器被设置为绝对布局。一旦我得到了原始版本的约束,我该如何重用它们来将面板更改回原始状态?您可以更改NetBeans使用的布局管理器,我建议您自己制作,以实现您试图实现的目标,否则,每次容器失效和验证时,当前安装的布局管理器都会放弃您所做的一切