我创建了一个带有组合框和一个按钮的JFrame,它将创建一个新线程并继续执行操作.我想要一个新的JFrame从每个新线程开始,将日志输出到新的JFrame.但即使我将与JFrame相关的代码放在新线程中并关闭该JFrame,它也会结束整个程序而不是运行的线程.制作我想要的最佳方法是什么?我只是希望在每个新线程启动时打开一个新的JFrame,当我关闭该JFrame时它将结束该线程.
问候!
我有2节课.
一个扩展canvas和inside创建一个jframe并将画布添加到该jframe并添加另一个keyadapter类来接收键事件.我还有测试代码的主要功能.从main运行时,表单将显示并接收关键事件.
现在我创建了另一个扩展jframe的类,并实现了keylistener来接收这种形式的事件.
一旦在第二类中完成功能,我想关闭第二个表单并显示第一个表单.当从第二个类中的键事件函数显示它时,第一个类键侦听器不起作用.
请稍微瞥一眼我的代码并告诉我如何纠正我的问题.感谢您的时间和宝贵的建议.
1级
public class Test extends Canvas {
private JFrame container;
public Test() {
container = new JFrame("Space Invaders");
JPanel panel = (JPanel) container.getContentPane();
panel.setPreferredSize(new Dimension(screenSize.width, screenSize.height));
panel.setLayout(null);
setBounds(0, 0, screenSize.width, screenSize.height);
panel.add(this);
container.pack();
container.setResizable(false);
container.setVisible(true);
try {
addKeyListener(new KeyInputHandler(this));
} catch (Exception e) {
e.printStackTrace();
}
requestFocus();
}
private class KeyInputHandler extends KeyAdapter {
public void keyPressed(KeyEvent e) {
//Some Action
}
public void keyReleased(KeyEvent e) {
//Some Action
}
public void keyTyped(KeyEvent e) { …Run Code Online (Sandbox Code Playgroud) 好吧,我在弹出式JFrame中遇到文本字段问题...我实际上有两个独立的程序,一个是游戏,一个是地图编辑器.我决定让游戏有一种内置的地图编辑器,所以我将地图编辑器中的类添加到我游戏项目中的一个新包中,进行了一些小的调整(比如从地图编辑器中删除main()方法),然后让事情有效.地图编辑器弹出为新的JFrame,当我单击"新建"按钮时,它会打开一个新的JFrame,其中包含几个TextFields和一个请求新地图宽度和高度的按钮.我无法编辑文本字段中的值...我不知道为什么...弹出代码:
private class newMap extends JFrame implements ActionListener{
JLabel wlbl = new JLabel("Map width: ");
JTextField w = new JTextField("12");
JLabel hlbl = new JLabel("Map height: ");
JTextField h = new JTextField("8");
JButton create = new JButton("Create map");
public newMap(Component p){
super("New Map");
setSize(100,75);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setLayout(null);
setVisible(true);
int bw = 96, bh = 24, s = 4, x = s;
wlbl.setBounds(x,s,bw,bh);
x+=s+bw;
add(wlbl);
w.setBounds(x,s,bw,bh);
x+=s+bw;
add(w);
hlbl.setBounds(x,s,bw,bh);
x+=s+bw;
add(hlbl);
h.setBounds(x,s,bw,bh);
x+=s+bw;
add(h);
create.setBounds(x,s,bw,bh);
x+=s+bw;
create.addActionListener(this);
add(create);
setSize(getWidth()-this.getContentPane().getWidth()+x,
getHeight()-this.getContentPane().getHeight()+s+s+bh);
setLocationRelativeTo(p); …Run Code Online (Sandbox Code Playgroud) 在我的java程序中,当用户点击主要按钮时,JFrame另一个按钮在JFrame主框架的顶部变得可见.现在如何使前一帧模糊?完全像图像中的背景:

嘿伙计们,所以我能够设置弹出窗口的默认框架,该窗口是从一个单独的类调用的.你可能会说我是java的极端菜鸟.任何帮助,将不胜感激.
这是调用第二个类来运行的代码.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;
class Login extends JFrame implements ActionListener
{
JButton SUBMIT;
JPanel panel;
JLabel label1,label2;
final JTextField text1,text2;
Login()
{
label1 = new JLabel();
label1.setText(" Enter Username:");
label1.setForeground(Color.green);
text1 = new JTextField(10);
label2 = new JLabel();
label2.setText(" Enter Password:");
label2.setForeground(Color.green);
text2 = new JPasswordField(10);
SUBMIT=new JButton("SUBMIT");
SUBMIT.setOpaque(true);
SUBMIT.setBackground(Color.BLACK);
SUBMIT.setForeground(Color.green);
panel=new JPanel(new GridLayout(4,1));
panel.add(label1);
panel.add(text1);
panel.add(label2);
panel.add(text2);
panel.add(SUBMIT);
add(panel,BorderLayout.CENTER);
SUBMIT.addActionListener(this);
setTitle("LOGIN or DIE!!!!!");
panel.setBackground(Color.black);
setDefaultLookAndFeelDecorated(true);
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent ae)
{
String …Run Code Online (Sandbox Code Playgroud) 我是Java的新手.
然而,我打算这样做;
1.一个主JFrame1和
2.在JFrame1中,我有一个用于JFrame2.setVisible(true)的Button1 ; &
3.另一个JFrame2.
我需要知道的是:当用户点击JFrame1-> Button1时
如何使JFrame1完全不活动,以便用户在JFrame2处于活动状态时无法单击JFrame1上的按钮或聚焦JFrame1.
我需要设置,当JFrame2关闭时,所有上述内容都可以点击/聚焦.
谢谢 !

这是我的节目的图片.所有这些JMenuItem都在一个JFrame中,我为每个JFrame添加了JPanel.当用户单击一个JMenuItem时,所有JPanels都将是不可见的,只有相应的JPanel才能工作.
这是一个好方法吗?我的班级很庞大.添加功能之前是5000行.
我制作了一个J1包含JButton 的JFrame(称之为).单击该按钮时,J2将打开一个新的JFrame(调用它).
J1还有一个包含的ArrayList J2,以及所有其他已打开的Jframe.
J2被设定为DISPOSE_ON_CLOSED
我为设置J2一个的windowClosed()方法.为了测试,我在循环里面的JFrame扔ArrayList,直到我获得了当前的J2刚关闭,而令人惊讶的,当我做J2.setVisisble(true)了J2窗口的回报!
我还检查了扔任务管理器,并看到虽然开了一个新的J2,会使整个程序消耗更多的RAM,关闭每个J2在任务管理器上没有显示太大差异,它看起来不像任何内存被释放.看起来几秒后内存消耗会回到"正常"状态,所以我怀疑是否有直接与之相关的事情J2.
每次启动新内容时我都尝试打印(System.out.print)所有ArrayList内容J2,打开一个窗口,关闭它,打开一个新窗口后,我得到以下的messgae:
home.ATMmachine[frame0,252,198,620x420,invalid,hidden,layout=java.awt.BorderLayout,title=ATM Machine No.1,resizable,normal,defaultCloseOperation=DISPOSE_ON_CLOSE,rootPane=javax.swing.JRootPane[,9,38,602x373,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
Run Code Online (Sandbox Code Playgroud)
这意味着J2没有完全删除!
dispose()假设JFrame 方法
释放此Window,其子组件及其所有子组件使用的所有本机屏幕资源.也就是说,这些组件的资源将被销毁,它们使用的任何内存都将返回给操作系统,并且它们将被标记为不可显示.
所以我只是错了,并且框架将被删除并且总和更晚.
如果没有,那么我如何删除框架,以便引用它就像引用null?
我创建了一个框架,里面有一个面板,面板里面有一个textarea.现在我创建了一个构造函数,使框架可见一段时间后,它被设置为不可见.它可见的时间显示了一些消息.
当我在outputDisplay类的main方法中运行构造函数代码时,它会显示文本按钮
但是当我通过使用new outputDisplay(String ip,int time)在其他类中调用它时,只有框架出现但内部没有文本.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class OutputDisplay {
JFrame frame;
JPanel panel;
JTextArea area;
Font font;
OutputDisplay(String ip,int time) throws InterruptedException{
frame = new JFrame("Warning");
frame.setLocation(400, 220);
panel = new JPanel();
area = new JTextArea();
font = new Font("Aharoni", Font.BOLD, 16);
area.setFont(font);
area.setForeground(Color.RED);
area.setSize(200, 200);
int j=0;
String[] t = {ip};
for(int i=0;i<t.length;i++){
area.append(t[i]+"\n");
}//for
//area.setText(ip);
panel.add(area);
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
frame.getContentPane().add(BorderLayout.CENTER, panel);
frame.pack(); …Run Code Online (Sandbox Code Playgroud) 我是Java新手,我正在创建一个简单的GUI.我在Java中有一个标签JFrame,当我点击它时,程序应该显示另一个框架并隐藏当前框架.我也打印它来检查标签(它的作用就像一个按钮)是否有效.第一次它并没有在所有的工作.它的工作原理从第二点击开始下一个尝试,但它并不能掩盖当前帧.
我的代码是:
private void jLabel4MouseClicked(java.awt.event.MouseEvent evt) {
MainFrame mf = new MainFrame();
jLabel4.addMouseListener(new MouseAdapter (){
@Override
public void mousePressed(MouseEvent e){
System.out.println("It works.");
mf.setVisible(true);
NewJFrame2 n2 = new NewJFrame2();
n2.setVisible(false);
}
});
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何解决它,以便从第一次单击和隐藏当前帧工作?