Java Jpanel文本框无输出
我使用Jpanel在java中工作,我的工作编译得很好,但是没有显示任何输出。希望有人能告诉我这是为什么。我使用的是jscrollpane,如果它与侦听器有关,我会在idk末尾调用它 FileDemoPanel.javaJava Jpanel文本框无输出,java,swing,jpanel,jscrollpane,Java,Swing,Jpanel,Jscrollpane,我使用Jpanel在java中工作,我的工作编译得很好,但是没有显示任何输出。希望有人能告诉我这是为什么。我使用的是jscrollpane,如果它与侦听器有关,我会在idk末尾调用它 FileDemoPanel.java package Tutoiral03Task01; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener
package Tutoiral03Task01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FileDemoPanel extends JPanel implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton openBtn, saveBtn;
JTextArea workTa;
openBtn = new JButton ("Open");
openBtn.setEnabled (false);
openBtn.setMnemonic('g');
openBtn.setToolTipText("open button");
setLayout(new BorderLayout());
saveBtn = new JButton ("Save");
saveBtn.setEnabled (false);
saveBtn.setMnemonic('f');
saveBtn.setToolTipText("Save button");
JTextArea logTA = new JTextArea (5, 100);
logTA.setEditable(false);
logTA.setBackground(Color.lightGray);
logTA.setMargin(new Insets(5,5,5,5));
JScrollPane logScrollPane = new JScrollPane(logTA);
add(logScrollPane);
}
}
package Tutoiral03Task01;
import javax.swing.*;
public class FileDemo {
public static void main (String[] args){
JFrame frame = new JFrame("Working with files");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new FileDemoPanel());
frame.pack();
frame.setVisible(true);
}
}
FileDemo.java
package Tutoiral03Task01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FileDemoPanel extends JPanel implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton openBtn, saveBtn;
JTextArea workTa;
openBtn = new JButton ("Open");
openBtn.setEnabled (false);
openBtn.setMnemonic('g');
openBtn.setToolTipText("open button");
setLayout(new BorderLayout());
saveBtn = new JButton ("Save");
saveBtn.setEnabled (false);
saveBtn.setMnemonic('f');
saveBtn.setToolTipText("Save button");
JTextArea logTA = new JTextArea (5, 100);
logTA.setEditable(false);
logTA.setBackground(Color.lightGray);
logTA.setMargin(new Insets(5,5,5,5));
JScrollPane logScrollPane = new JScrollPane(logTA);
add(logScrollPane);
}
}
package Tutoiral03Task01;
import javax.swing.*;
public class FileDemo {
public static void main (String[] args){
JFrame frame = new JFrame("Working with files");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new FileDemoPanel());
frame.pack();
frame.setVisible(true);
}
}
问题是您在actionperformed方法中创建了所有按钮和其他按钮。 这是错误的,因为它被用作按钮列表器,所以如果你不按下按钮,什么都不会发生。我们使用在类的构造函数中编写GUI框架,然后创建GUI类的对象类型。所以我想我把它修好了,我做了一些额外的修改,使程序更简单。我没有做的步骤是添加一个ButtonListener,所以按钮什么也不做。 我希望它能帮助你
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FileDemoPanel extends JFrame {
private JPanel panel = new JPanel();
private JButton openBtn = new JButton("Open");
private JButton saveBtn = new JButton ("Save");
private JTextArea workTa;
public FileDemoPanel(){
openBtn.setEnabled (false);
openBtn.setMnemonic('g');
openBtn.setToolTipText("open button");
setLayout(new BorderLayout());
saveBtn.setEnabled (false);
saveBtn.setMnemonic('f');
saveBtn.setToolTipText("Save button");
JTextArea logTA = new JTextArea (5, 100);
logTA.setEditable(false);
logTA.setBackground(Color.lightGray);
logTA.setMargin(new Insets(5,5,5,5));
JScrollPane logScrollPane = new JScrollPane(logTA);
panel.add(openBtn);
panel.add(saveBtn);
panel.add(logTA);
panel.add(logScrollPane);
this.setContentPane(panel);
this.setVisible(true);
this.setResizable(true);
this.setSize(350,150);
this.setTitle("Κεντρική Σελίδα");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
主类。正如你所看到的,太小了
public class FileDemo {
public static void main (String[] args){
new FileDemoPanel();
}
}
为什么要在
操作执行
方法中设置FileDemoPanel
的所有代码?在当前场景中永远不会调用此方法。如果您将当前在actionPerformed
方法中拥有的代码移动到FileDemoPanel
的构造函数中,就会得到预期的结果。这是我必须完成的任务的一部分。它必须像这样设置好,然后你需要一些实际调用该方法的东西。可能是您需要将JButton
(例如)添加到JFrame
,然后将FileDemoPanel
对象添加为ActionListener
。你知道什么是ActionListener
以及它是如何工作的吗?这段代码的哪一部分是您自己编写的?我得到了filedemo.java和filedemopanel的imports。其余的我自己写的很好,在那种情况下,你应该再次考虑我的第一个评论。将当前在actionPerformed
方法中的代码移动到FileDemoPanel
的构造函数中。