标签: jbutton

Swing/Java:如何正确使用getText和setText字符串

我试图nameField在点击Label被叫label1后使输入出现在Button被叫button1中.现在它说:'txt',我理解为什么.但我不知道如何使用字符串!谁能解释一下我做错了什么以及如何正确使用这个字符串?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class thisismytest2 {
    public static void main(String[] args) {

        final JFrame frame = new JFrame();  
        JPanel panel = new JPanel();    
        JTextField nameField = new JTextField("...", 2);    
        JButton button1 = new JButton();
        final JLabel label1 = new JLabel();
        label1.setText("txt");
        label1.setVisible(false);
        String txt = nameField.getText();

        frame.add(panel);
        panel.add(button1);
        panel.add(label1);
        frame.setSize(200,200);
        frame.setVisible(true);
        panel.add(nameField);
        frame.setSize(600,400); 
        nameField.setBounds(400, 40, …
Run Code Online (Sandbox Code Playgroud)

java swing jlabel jbutton settext

6
推荐指数
1
解决办法
16万
查看次数

如何在NetBeans中控制JButton HTML文本的居中?

我试图在JButton上放一行两行文字; 例如

+----------+
|  READER  |
|   STOP   |
+----------+
Run Code Online (Sandbox Code Playgroud)

但是我无法将它集中在按钮上.我去属性编辑器对JButton,并输入<html><center>READER<br>STOP文本属性.这导致两个单词相对于彼此居中,但是它们一起看起来仍然朝向按钮面的右侧移动,如:

+----------+
|    READER|
|     STOP |
+----------+
Run Code Online (Sandbox Code Playgroud)

还有水平和垂直对齐和文本位置属性,我将它们全部设置为CENTER,但这没有任何我能看到的效果.

编辑:这里是一个例子,说明当我<center>完全省略时它是如何布局的,以防任何人对我的描述感到困惑"读者和停止是相互尊重的左对齐,但在按钮上右对齐":

+----------+
|    READER|
|    STOP  |
+----------+
Run Code Online (Sandbox Code Playgroud)

编辑:这是NetBeans生成的代码:

    readerStopButton_.setBackground(javax.swing.UIManager.getDefaults().getColor("Button.light"));
    readerStopButton_.setFont(new java.awt.Font("Geneva", 0, 12)); // NOI18N
    readerStopButton_.setText("<html><center>READER<br>STOP</center></html>\n");
    readerStopButton_.setToolTipText("<html><b>Stop</b> button is currently inactive.  ");
    readerStopButton_.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    readerStopButton_.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            readerStopButton_ActionPerformed(evt);
        }
    });
    operationButtons_.add(readerStopButton_);
Run Code Online (Sandbox Code Playgroud)

编辑:这是按钮对我的看法的屏幕截图.有很多我不知道做布局,所以我很可能省略一些关键信息.但基本上我让NetBeans完成所有工作,除了提供HTML文本.

编辑:打开一个显示所有按钮的替换屏幕截图.请注意,不使用HTML的单词(单字单词)正确对齐,而使用HTML的两个正在搞乱.

更好地看待问题

html java swing jbutton

6
推荐指数
2
解决办法
7595
查看次数

从ActionListener获取按钮名称?

我在互联网上搜索过但无法找到答案:

我正在使用for循环来创建名为a1,a2等的36个按钮,并同时为每个按钮分配一个唯一的Action Command.

后来我想从actionPerformed(ActionEvent e)方法中获取按钮的名称.

我可以让ActionCommand足够简单,但我也需要按钮的名称.

任何帮助非常感谢!

编辑:

这是我正在使用的代码:

String letters[] = {"0", "a", "b", "c", "d", "e", "f"};
JButton btn[] = new JButton[35];
int count = 0;


for (int f=1; f < 7;f++){

        for (int i=1; i < 7;i++){
            btn[i] = new JButton(letters[f]+i, cup);
            System.out.println(btn[i]));
            mainGameWindow.add(btn[i]);
            btn[i].addActionListener(this);
            String StringCommand = Integer.toString(randomArrayNum());
            btn[i].setActionCommand(StringCommand);
            count++;
            if(count == 18){
                generateArray();
            }

        }

}
Run Code Online (Sandbox Code Playgroud)

这为6x6网格提供了36个按钮,分别为a1-6,b1-6,c1-6等

一旦我以这种方式创建按钮,我似乎无法控制按钮,我无法分配图标或获取按钮的名称.

提前致谢.

java swing jbutton

6
推荐指数
3
解决办法
5万
查看次数

如何实际选择JButton

这将是一个真正的理论问题,请跟我一点.我需要用我的JButton做一些事情,我不知道从哪里开始.

所以我需要的是能够点击一个JButton,并有一个视觉证明它被选中,例如红色边框或白色背景或其他东西.而且我希望它保持这样,直到以相同的方式选择另一个JButton.现在,当我点击一个Jbutton时,会有一个简短的视觉显示点击它,但我不能让它持续更长时间.

我尝试使用ChangeListeners,但没有结果.

所以我的问题基本上是:你建议我尝试什么样的方法?

1 - 返回ChangeListener,它是唯一的选项2 - JButton有另一个选项可以做到这一点

对不起,如果它太模糊了,但我发现的其他一切都是超级具体的,并没有回答我的问题.

java swing jbutton

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

如何使用两个按钮创建一个窗口,打开一个新窗口

我需要程序 - 主JFrame有2个按钮

  1. 按键
  2. BUTTON2

当我单击按钮时,它必须打开带有新选项的新JFrame窗口,而如果我单击button2然后打开另一个窗口.

在这两个新窗口中,我必须添加下一个和上一个的按钮.

我有一个问题,当我打开按钮1,然后打开2个窗口,主JFrame仍然可见.

我的第一个摇摆计划:

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

public class example {

public static void main (String[] args){    
  JFrame frame = new JFrame("Test");
  frame.setVisible(true);
  frame.setSize(500,200);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  JPanel panel = new JPanel();
  frame.add(panel);
  JButton button = new JButton("hello agin1");
  panel.add(button);
  button.addActionListener (new Action1());

  JButton button2 = new JButton("hello agin2");
  panel.add(button2);
  button.addActionListener (new Action2()); 
}
static class Action1 implements ActionListener {        
  public void actionPerformed (ActionEvent e) {     
    JFrame frame2 = new …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton actionlistener

6
推荐指数
1
解决办法
11万
查看次数

按钮大小(Java)

我用Java创建了一个简单的菜单,但我无法弄清楚如何更改按钮的大小.我的菜单看起来像这样: 目前的样子

我希望最后一个按钮与其他按钮一样大小.

tlacTisk.setSize(10,10);
tlacTisk.setPreferredSize(10,10);
Run Code Online (Sandbox Code Playgroud)

不起作用.

代码,我创建按钮和框:

JButton tlacSVG = new JButton();
        tlacSVG.setText("Export do SVG");
        tlacSVG.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                exportujSVG();
            }
        });

        JButton tlacPNG = new JButton();
        tlacPNG.setText("Export do PNG");
        tlacPNG.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                exportujPNG();
            }
        });

        JButton tlacTisk = new JButton();
        tlacTisk.setText("Tisk...");
        tlacTisk.setPreferredSize(new Dimension(50, 25));
        tlacTisk.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                tiskni();
            }
        });


        Box boxTlacitek = Box.createVerticalBox();
        boxTlacitek.add(Box.createVerticalStrut(5));
        boxTlacitek.add(tlacSVG);
        boxTlacitek.add(Box.createVerticalStrut(10));
        boxTlacitek.add(tlacPNG);
        boxTlacitek.add(Box.createVerticalStrut(10));
        boxTlacitek.add(tlacTisk);
        boxTlacitek.setBorder(BorderFactory.createTitledBorder("Menu"));

        okno.add(boxTlacitek, BorderLayout.EAST); …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton layout-manager preferredsize

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

Java:如何从AbstractAction对象引用GUI组件?

通常需要根据另一个GUI对象的状态更改其他GUI对象的行为.例如,当按下按钮时,标签应更改其名称.但是,当我使用AbstractAction对象时,JButton myButton = new JButton(myButtonAction);我需要引用继承自AbstractAction的对象中的GUI对象.我应该只是在GUI中创建AbstractAction对象,然后将所有必要的GUI引用传递给AbstractAction对象,还是可以认为是坏样式?

为了使它更具体:

// AbstractAction
   public class MyAction extends AbstractAction {
        public  MyAction(String name, 
                            String description, Integer mnemonic, JLabel) {
            super(name);
            putValue(SHORT_DESCRIPTION, description);
            putValue(MNEMONIC_KEY, mnemonic);
        }
        public void actionPerformed(ActionEvent e) {

                // do something     
            }
        }
    }

public class GUI{
   public Action myAction = null;

   public GUI(){     
        JLabel label = new JLabel("text");
        //This is not a good idea:
         myAction = new MyAction("some text" , desc, new Integer(KeyEvent.VK_Q), label);

        JButton myButton = new JButton(myAction);
   }
}
Run Code Online (Sandbox Code Playgroud)

java swing jbutton abstract-action

6
推荐指数
2
解决办法
3946
查看次数

Swing Jbutton:仅在悬停时显示边框和背景

我想为我的自定义Swing.JButton添加一个悬停效果,类似于Chrome浏览器上的图标:

在悬停之前>>

在此输入图像描述

悬停后>>

在此输入图像描述

我可以在创建按钮时将其设置为"之前"状态,但是当它悬停时我无法创建"边框+凸起背景".当我尝试将边框重新添加到按钮时,我在插入重新绘制新边框后获得了移动效果.

这是我目前的代码:

public class MyButton extends JButton implements MouseListener {

public MyButton(String iconPath, String toolTip) {
    super(new ImageIcon(TipButton.class.getResource(iconPath)));
    addMouseListener(this);
    setBorder(null);
    setBorderPainted(false);
    setFocusPainted(false);
    setOpaque(false);
    setContentAreaFilled(false);
    setToolTipText(toolTip);
}

public MyButton(String iconPath, String name, String toolTip) {
    this(observers, iconPath, toolTip);
    setText(name);
}

@Override
public void mouseClicked(MouseEvent e) {}

@Override
public void mousePressed(MouseEvent e) {}

@Override
public void mouseReleased(MouseEvent e) {}

@Override
public void mouseEntered(MouseEvent e) {
    if (e.getSource() != this) return;

    setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
}

@Override
public void mouseExited(MouseEvent e) {
    if …
Run Code Online (Sandbox Code Playgroud)

java swing hover jbutton

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

设置Nimbus按钮的"背景"按钮

我正在使用Nimbus Look and Feel开发应用程序.有一个表和一列包含按钮(使用Rob Camick表按钮列).这确实有效,但结果并不像我预期的那样.我试图修复外观,但无济于事.

所以问题是:如何更改Nimbus按钮的"背景"(圆角矩形以外的区域)?最好以非hacky方式:-)

使用默认的表列按钮,结果如下所示:

背景不正确的按钮

正如您所看到的,背景(并且我的意思是按钮圆角矩形之外的区域)对于奇数(白色)行是错误的.产生此输出的代码是:

public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
    if (isSelected) {
        renderButton.setForeground(table.getSelectionForeground());
        renderButton.setBackground(table.getSelectionBackground());
    } else {
        renderButton.setForeground(table.getForeground());
        renderButton.setBackground(table.getBackground());
    }

    if (hasFocus) {
        renderButton.setBorder( focusBorder );
    } else {
        renderButton.setBorder( originalBorder );
    }

    // <snip some code>

    renderButton.setOpaque(true);

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

renderButton是默认的实例JButton.我已经尝试弄乱按钮的背景颜色了,但这并没有像我预期的那样有效:

        Color alternate = (Color)LookAndFeel.getDesktopPropertyValue("Table.alternateRowColor", Color.lightGray);
        Color normal = (Color)LookAndFeel.getDesktopPropertyValue("Table.background", Color.white);
        if (row % …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton nimbus tablecellrenderer

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

使JList中的按钮可单击

我不敢相信这不起作用.

我有一个JList.我已将其渲染器设置如下.基本上RankingPanel是一个带有两个标签和一个按钮的JPanel.

topAchieverList = new JList();
topAchieverList.setCellRenderer(new TopBottomCellRenderer());
Run Code Online (Sandbox Code Playgroud)

这是我的TopBottomCellRenderer.

class TopBottomCellRenderer extends RankingPanel implements ListCellRenderer {

    public TopBottomCellRenderer() {
    }

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        try {
            Achievers achiever = (Achievers) value;

            if (achiever == null) {
                return this;
            }
            itemRank.setText("#" + achiever.rank);
            itemUnits.setText("" + achiever.units);

            //this is the button that does not click
            itemNameButton.setText(achiever.name);

            //set bg
            if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            } else {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }
            return this; …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton jlist

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