gpt4 book ai didi

java - 在 Java 中使用 JButton 打开后窗口无法正确显示

转载 作者:行者123 更新时间:2023-12-02 11:56:55 25 4
gpt4 key购买 nike

我的 java 应用程序有一个非常奇怪的问题。我基本上单击 JButton,然后我想要打开的新窗口打开,但没有显示任何内容。这是发生的事情。

This is what happens after clicking the button

如果我在不使用 JButton 的情况下单独运行该类,它会像这样运行。 The window working without JButton

这是按钮的代码。

public Create()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 629, 316);
contentPane = new JPanel();
contentPane.setBackground(new Color(255, 255, 204));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

btnBuildData = new JButton("Build Graph");
btnBuildData.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{

//CreateTest frame = new CreateTest();
new CreateTest().setVisible(true);


}
});

btnBuildData.setBackground(Color.WHITE);
btnBuildData.setForeground(Color.BLACK);
btnBuildData.setBounds(29, 59, 107, 23);
contentPane.add(btnBuildData);

这对我来说很奇怪,因为我已将此代码用于其他类,并且它按预期工作。我尝试了很多不同的方法来完成同一件事,但没有一个有效。这是我用按钮打开的框架的一些代码。

public class CreateTest extends JFrame {
public CreateTest() {
}
//Create the connection to Neo4j
Driver driver = GraphDatabase.driver( "bolt://localhost", AuthTokens.basic( "*****", "*******" ) );
Session session = driver.session();
StatementResult resultVariable;
Record recordVariable;

//Create variables to manage communication with Neo4j
String resultString = new String();
Query neoQuery = new Query();





private JTextField progressTextField;


public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new CreateTest().initUI();



}
});
}

protected void initUI()
{
final JFrame frame = new JFrame();

//the form
frame.setTitle(CreateTest.class.getSimpleName());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



JButton button = new JButton("Click here to add data");
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{


doWork();
}
});




progressTextField = new JTextField(25);
progressTextField.setEditable(false);
frame.getContentPane().add(progressTextField, BorderLayout.NORTH);
frame.getContentPane().add(button, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}

protected void doWork() {
SwingWorker<Void, Integer> worker = new SwingWorker<Void, Integer>() {
@Override
protected Void doInBackground() throws Exception {
CreateTest frame = new CreateTest();
}


@Override
protected void process(List<Integer> chunks) {
progressTextField.setText(chunks.get(chunks.size() - 1).toString());
}

@Override
protected void done() {
progressTextField.setText("Success: All Nodes have been added ");
}
};
worker.execute();
}


}

这两个窗口之间存在差异。一个是绝对布局,另一个是 jpanel,但我认为这不是问题。如果有人有任何想法,请告诉我,任何想法将不胜感激。谢谢。

最佳答案

使用 new CreateTest() 调用空构造函数

public CreateTest() {
}

它什么也不做,因为你的代码在它之外。

关于java - 在 Java 中使用 JButton 打开后窗口无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47534042/

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