gpt4 book ai didi

java - 为什么内容没有出现?但是调整框架的时候就会出现

转载 作者:行者123 更新时间:2023-12-02 04:07:23 26 4
gpt4 key购买 nike

我现在正在使用 Frame 创建一个简单的程序。然而,我面临一个未知的错误,除了框架上尺寸为 90 * 90 的面板外,任何内容都没有出现。当我通过拖动调整窗口大小时,内容会按我的预期显示。我已经厌倦了通过谷歌搜索的几种方法..都一样..不起作用。

为了清楚地说明这一点,我将附上一些屏幕截图。

  • 鼠标拖动之前 enter image description here

  • 鼠标拖动后 enter image description here

Java 代码:

    import java.awt.Color;
import java.awt.Container;
import javax.swing.*;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;

class menuListener implements MenuListener {

@Override
public void menuSelected(MenuEvent e) {
// TODO Auto-generated method stub
System.out.println("menu clicked !");
System.exit(0);
}

@Override
public void menuDeselected(MenuEvent e) {
// TODO Auto-generated method stub

}

@Override
public void menuCanceled(MenuEvent e) {
// TODO Auto-generated method stub

}

}

public class pcMain extends JFrame implements Runnable {
userSeat us;
int user;
JPanel[] userSeat;
Container con;
JPanel leftPane, rightPane;
JMenuBar jm;
JMenu exit;

public pcMain(int user) {

super("Pc Management Application");

con = getContentPane();
con.setBackground(new Color(0, 128, 128));

setVisible(true);
setSize(1100, 500);
// setLayout(null);
this.setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Menu bar
jm = new JMenuBar();

// Menu items
exit = new JMenu("EXIT");
exit.addMenuListener(new menuListener());

// letPanel
leftPane = new JPanel();
leftPane.setLayout(null);
// leftPane.setSize(800, 470);
leftPane.setBorder(BorderFactory.createLineBorder(Color.black));
leftPane.setOpaque(false);
leftPane.setBounds(0, 0, 800, 500);

// rightPanel
rightPane = new JPanel();
// rightPane.setSize(300, 470);
rightPane.setBorder(BorderFactory.createLineBorder(Color.red));
rightPane.setOpaque(false);
rightPane.setBounds(800, 0, 300, 500);

// adding all components
this.user = user;
jm.add(exit);
us = new userSeat(user);
userSeat = us.getSeat();
setJMenuBar(jm);
// add(leftPane);
// add(rightPane);

}

@Override
public void run() {

int seatX = 10;
int seatY = 10;

// Add user seats into leftPane
for (int i = 0; i < user; i++) {

if (i != 0 && i % 5 == 0) {
// Increase y value
System.out.println("if : " + i);
seatX = 10;
seatY += 100;
}

// Increase x values
userSeat[i].setLocation(seatX, seatY);
leftPane.add(userSeat[i]);
// add(leftPane);
System.out.println("else :" + i);
seatX += 95;

}

add(leftPane);

}

public static void main(String[] args) {
new Thread(new pcMain(10)).start();

}

}

最佳答案

正如 @Kiheru 所说,我将方法 setVisibe() 移至最后并使其正常工作,在添加 leftPane 后我添加了两个方法 repaint() 和 revalidate()

如下:

enter image description here

谢谢大家:)

关于java - 为什么内容没有出现?但是调整框架的时候就会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34137190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com