小编Jak*_*ger的帖子

如何查找连续重复的未知子字符串

我正在尝试建立一个系统来分解(如果该术语在化学中是正确的)一个给定的扩展化学公式,例如C6H2NO2NO2NO2CH3括号,以便它C?H?(NO?)?CH?.(在第一个实例中忽略下标或缺少下标).问题是,我不知道重复的分子会是什么,甚至不知道它会持续多久.我如何找到并计算重复次数?

对于上下文,这是我到目前为止的代码,它从2D元素列表生成公式:

private String getFormula(List<List<Element>> elements)
{
    String formula = ""; //TODO Switch out for StringBuilder

    for(List<Element> currentElement : elements)
    {
        formula += currentElement.get(0).getSymbol(); //Every element per list is identical, so looking at 0 will always be safe
        if(currentElement.size() > 1) formula += currentElement.size(); //Only display a number if there is more than 1 element
    }

    return formula;
}
Run Code Online (Sandbox Code Playgroud)

java string substring

5
推荐指数
1
解决办法
334
查看次数

我如何使用 BoxLayout 来做到这一点?

我已经完美地设置了菜单(中心框),但我不知道如何放置标签。目前发生的情况是标签位于菜单选项下方,并且菜单选项被推到右侧。

这是我想要发生的事情: 在此输入图像描述

这是正在发生的事情: 在此输入图像描述

目前我的盒子集中在:

this.setAlignmentX(Component.CENTER_ALIGNMENT);
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法对我的标签执行相同的操作:

this.setAlignmentX(Component.BOTTOM_ALIGNMENT);
this.setAlignmentY(Component.LEFT_ALIGNMENT);
Run Code Online (Sandbox Code Playgroud)

这什么也没做。

抱歉,这张图太糟糕了,我用 MS Paint 花了大约 20 秒就把它画出来了。

这是标签的重要部分

public Label(String text)
{

    this.setHorizontalTextPosition(JLabel.CENTER);
    this.setVerticalTextPosition(JLabel.CENTER);
    this.setHorizontalAlignment(0);
}
Run Code Online (Sandbox Code Playgroud)

这是我创建盒子布局的地方:

 pnlMain.setLayout(new BoxLayout(pnlMain, BoxLayout.Y_AXIS));
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的 JFrame 扩展类中的主要函数。功能之上只是面板、按钮和标签的创建。

public Window()
{
    //Create the JFrame
    super("Tank Trouble");
    this.pack();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);

    //Changes the frame size to your screen size
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (int) (dimension.getWidth());
    int y = (int) (dimension.getHeight());
    setSize(x,y);
    setResizable(false);
    //GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this); //Makes the application go fullscreen

    getContentPane().add(pnlMaster);

    pnlMaster.add(pnlMenu, "Main Menu");
    pnlMaster.add(pnlOptions, "Options");
    pnlMaster.add(pnlGame, …
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager boxlayout

3
推荐指数
1
解决办法
1807
查看次数

Java - Action Listener只响应一个if语句?

我目前正在用Java创建一个定制的Minecraft Server启动器,并且我已经到了早期阶段,我真的喜欢按钮来做某事.我设法得到一个按钮来响应(开始按钮),但是一旦我输入第二个if语句使停止按钮响应,之前工作的启动按钮现在没有.我无法测试停止按钮,因为它默认是禁用的.当我切换if语句(首先将stopBtn actionlistener放入)时,启动按钮再次起作用,但停止按钮不起作用.请有人看看代码并提供帮助吗?

package custommcserver;

import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;

class Window extends JFrame implements ActionListener
{
    JPanel mainPnl = new JPanel(new GridLayout(2,1));
    JPanel propPnl = new JPanel();
    JButton startBtn = new JButton("Start");
    JButton stopBtn = new JButton("Stop");
    JButton propBtn = new JButton("Properties");

    public Window()
    {
        super("Custom Minecraft Server Launcher") ;
        setSize(500,200) ; 
        setDefaultCloseOperation(EXIT_ON_CLOSE) ;
        add(mainPnl) ;
        mainPnl.add(startBtn);
        mainPnl.add(stopBtn);
        mainPnl.add(propBtn);
        stopBtn.setEnabled(false);
        startBtn.addActionListener(this);
        stopBtn.addActionListener(this);
        propBtn.addActionListener(this);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent event) 
    {

        if (event.getSource() == stopBtn);
        {
             stopBtn.setEnabled(false);
             startBtn.setEnabled(true);
        } …
Run Code Online (Sandbox Code Playgroud)

java swing actionlistener

2
推荐指数
1
解决办法
3923
查看次数

如何将JTextField输入限制为仅数字和仅2个字符?

我正在尝试创建一个只允许数字输入的JTextField,只允许两个字符(换句话说只允许数字0-99).我查看了一些教程,并尝试将输入限制为仅限数字到目前为止.到目前为止我的代码的问题是接受所有关键输入.我试图反转大于和小于符号,它根本不再接受任何输入.我认为问题在于关键的字符代码,但是一些帮助会很好,因为我找不到任何有用的东西(我看到的每个地方都有不同的Java键盘).

if(event.getSource() == txtMasterSound)
    {
        if(event.getKeyCode() < 0 || event.getKeyCode() > 9)
        {
            System.out.println("Your input was invalid");
            event.consume();
        }
        else
        {
            System.out.println("Your input was valid");
            return;
        }
    }
Run Code Online (Sandbox Code Playgroud)

至于限制字符,我真的不知道从哪里开始,所以一些指向正确的方向也会很好.

java swing keycode keylistener jtextfield

1
推荐指数
1
解决办法
6519
查看次数

如何使摆动窗口在内容之间切换?

对不起,如果我的标题有点模糊,但我想要做的是让按钮通向另一个屏幕.我正在做一个基本的游戏,所以会有几个.我目前正在尝试做的是选项屏幕.我已经找到了使用revalidate(),repaint()和多个面板执行此操作的基本方法,但每次打开另一个窗口并且看起来效率不高.

这是我的选项屏幕代码,用于处理从主菜单到自身的屏幕更改.

package menu;

import javax.swing.JFrame;
import javax.swing.JPanel;

import main.Window;

public class Options 
{
JPanel pnlMain = Window.pnlMain;
JFrame frame = new main.Window();
    JPanel pnlOptions = new JPanel();

public static Button graphics = new Button("Graphics");

public Options()
{
    Listener listener = new Listener();

    frame.add(pnlOptions);
    frame.remove(pnlMain);
    pnlMain.revalidate();
    pnlMain.repaint();

    pnlMain.setVisible(false);
    pnlOptions.setVisible(true);

    pnlOptions.add(graphics);

    pnlOptions.revalidate();
    pnlOptions.repaint();

    graphics.addActionListener(listener);
}
Run Code Online (Sandbox Code Playgroud)

}

package menu;

import javax.swing.JFrame;
import javax.swing.JPanel;

import main.Window;

public class Options 
{
JPanel pnlMain = Window.pnlMain;
JFrame frame = new main.Window();
    JPanel pnlOptions = new …
Run Code Online (Sandbox Code Playgroud)

java swing window repaint

0
推荐指数
1
解决办法
1425
查看次数