标签: jbutton

根据文本调整JButton和其他组件的大小

如何在运行时调整JButton的大小以使其适应由给定的文本setSize?我做了一些搜索,这是我到目前为止提出的代码.这会变成一种实用方法吗?

FontMetrics metrics = getFontMetrics( font );
int width = metrics.stringWidth( string );
Run Code Online (Sandbox Code Playgroud)

PS:没有使用布局管理器.

java swing text resize jbutton

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

JTable:单元格中自定义面板中的按钮

我希望能够在一个带有JButton的单元格中有一个JPanel,它在单击时可以完成一些工作.

我找了关于Cell Editors的howtos,但所有的例子都谈到用另一个组件替换单元格(例如用JTextField替换int等)我的情况有点不同:

我有以下ADT

class MyClass {
  public String title;
  public String url;
  public String path;
  public int annotations;
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个自定义表格单元格模型,该模型有1列,该列的类是MyClass.然后我为该类创建了一个单元格渲染器,它返回一个JPanel,如下所示:

MyClass Cell Renderer

如您所见,JPanel包含一个按钮.我希望这个按钮在点击时启动JFrame.有任何想法吗?

如果您建议Cell Editor,请更具体地说明如何操作.如果可能,请提供一些伪代码.

谢谢.

PS我很确定这个问题的标题需要一些工作.;)

java jtable jpanel jbutton

5
推荐指数
2
解决办法
6152
查看次数

JButton的动作调用了focusLost事件.这怎么可能?

我们的一位客户在我们的申请中报告了一个例外.问题是,我完全无法理解如何重现这个bug.

这是代码:

btn.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        popup.show(btn, 3, btn.getHeight());
    }
});
Run Code Online (Sandbox Code Playgroud)

备注:

  • btn是类型的最终局部变量JButton.
  • popup是类型的最终局部变量JPopupMenu.

抛出以下异常:

java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
    at java.awt.Component.getLocationOnScreen_NoTreeLock(Unknown Source)
    at java.awt.Component.getLocationOnScreen(Unknown Source)
    at javax.swing.JPopupMenu.show(Unknown Source)
    at fr.def.iss.vd2.mod_site_watcher_gui.SiteElementPanel$4.actionPerformed(SiteElementPanel.java:117)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.focusLost(Unknown Source)
    at java.awt.Component.processFocusEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at …
Run Code Online (Sandbox Code Playgroud)

java swing action focus jbutton

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

在Java Swing中通过JLabel覆盖JButton?

是否可以在Swing中将Button叠加在Label上?

例如,如果有一个带有图像的JLabel而没有文本,我想在我的JLabel上覆盖我的按钮.标签定义如下:

myLabel = new javax.swing.JLabel(new ImageIcon( myPicture ));  
Run Code Online (Sandbox Code Playgroud)

如果没有,那么任何想法我怎么能意识到这一点,谢谢.

编辑:其实我读到有关添加JPanel到JLabel,当我添加一个面板按钮布局,它编译得很好,但没有任何可见,只是JLabel与图像

更新:正如@ paranoid-android所建议的那样,我已经解决了我的问题.然而,我仍然必须知道如何自定义覆盖在JLabel顶部的组件的位置,因为我没有太多的控制(可能因为通常我使用netbeans绘制布局,这将需要硬编码).

像这样的东西有效:

ImagePanel(Image image, int id) {
    this.image = image;
    this.tile = false;

    JButton backButton = new JButton();
    JButton nextButton = new JButton();
    backButton.setText(" BACK ");
    nextButton.setText(" NEXT ");


    add(backButton);
    add(nextButton);

};

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}
Run Code Online (Sandbox Code Playgroud)

java swing jlabel jbutton imageicon

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

如何制作JButtons的棋盘格

我需要制作一个由交替的黑色和白色JButton组成的棋盘,它们正对着另一个.我可以使用图形类添加按钮吗?我很感激帮助不回答,因为这是家庭作业.

java graphics swing jbutton

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

在Java中将变量传递给ActionListener

我有类似下面的代码:

    for(int i=0;i<10;i++){
        button=new JButton(buttons[i]);
        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                setPage(i);
            }
        });
        menu.add(button);
    }
Run Code Online (Sandbox Code Playgroud)

但是,该变量i未在ActionListener类的范围内定义.我怎样才能传递变量?

java swing jbutton actionlistener

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

在开始活动之前,需要单击两次Java jButton

我正在Netbeans 7.1中构建一个GUI,它代表了医院设备项目的输液泵.按jButton1应显示某个jLabel,表示输液正在运行.再次按jButton1应该停止它.我唯一的问题是按钮需要在第一次工作之前点击两次.在那之后,它完全符合我希望它的工作方式.我在这个问题上搜索了多个线程,但其他解决方案似乎不起作用.谁能帮我?提前致谢!

  package infusion;
  public class Infusion {
    static Interface screen;

    public Infusion(){

        screen = new Interface();
        screen.setVisible(true);
        screen.jLabel3.setVisible(true);
        screen.jButton1.setVisible(true);
    }    

    public static void main(String[] args) {
        // TODO code application logic here
        Infusion infusion = new Infusion();
    }
   }
Run Code Online (Sandbox Code Playgroud)

这是用户界面的代码(主要由Netbeans生成).jButton1ActionPerformed的实现是我调整过的唯一代码.

package infusion;

    public class Interface extends javax.swing.JFrame {
        boolean pump1Running = false;
        /**
         * Creates new form Interface
         */
        public Interface() {
            initComponents();
        }


        /**
         * This method is called from within the constructor to initialize the form.
         * …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton netbeans-7

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

Java:展开JButton以填充Container

我有一个JButton我想扩展以填补JPanel持有它的大小.我尝试过几种不同的方式,没有运气.以下是一些尝试:

  1. 这里推荐的手动尺寸设置- 按钮尺寸没有变化.

    panel  = new JPanel(new CardLayout());
    button = new JButton();
    button.setPreferredSize(new Dimension(BUTTON_SIZE, BUTTON_SIZE)); 
    panel.add(button);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 试图用一个BorderLayout如在暗示扩大按钮在这里.尺寸没有变化.

    panel  = new JPanel(new BorderLayout());
    button = new JButton();
    panel.add(button, BorderLayout.CENTER);
    
    Run Code Online (Sandbox Code Playgroud)

我可能做错了什么,所以非常感谢任何帮助.

编辑

以下是解决问题的摘要.有两件事有效

  1. 删除LayoutManager(在调用中new JPanel),根据Oracle默认为BorderLayout.
  2. 在接受的答案中添加维度(即new BorderLayout(0,0)).

java swing jpanel jbutton

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

如何通过单击JButton添加JPanel?

我正在尝试创建一个小的GUI,它有2个JButton和2个JPanel,每个都有一些绘图动画.默认情况下,它必须显示第一个JPanel,并通过单击第二个JButton我想看到我的第二个JPanel.所以:我创建了JFrame,Panel1和Panel2,在那里我绘制了我的动画,创建了Button1和Button2并添加了ActionListeners.我还有MainPanel,它有一个字段变量i.通过更改此"i"我的构造函数将MainPanel添加到Panel1(默认)或Panel2(通过单击JButton2我更改i).比我把这个MainPanel添加到我的框架.所以我的问题:在类MainPanel中我有refreshMe方法,我应该在那里写什么才能使我的GUI正常工作?谢谢.这是我的代码:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class GuiTest {

    public static void main(String[] args) {
        JFrame f = new JFrame();
        MainPanel myPanel = new MainPanel();
        f.add(myPanel);
        Button1 button1 = new Button1();
        Button2 button2 = new Button2();
        myPanel.add(button1);
        myPanel.add(button2);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }
}

class MainPanel extends JPanel {
    Panel1 p1 = new Panel1();
    Panel2 p2 = new Panel2();
    public int i = 1;  //this is being changed later by clicking …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jbutton actionlistener

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

我的ActionListener如何在JButton中访问另一个类中的变量?

我正在为一个项目做一台老虎机.我无法让我JButton从我的生成新的随机数ArrayList.我可以在程序启动和actionlistener设置时随机化数字,但它不能满足我的需要.它仅用于测试目的.

Actionlistener在一个不同的Java文件中.一切正常,我只是无法弄清楚如何在占位符产生新的随机量plc1,plc2以及plc3按钮被按下时.

我刚刚开始在3周前开始编码.请不要讨厌,这是我的第一个项目.

package GGCGuiLotto;

import java.util.ArrayList;
import java.awt.Color;
import java.awt.Image;
import java.awt.BorderLayout; 
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Icon;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;

import java.util.Random;


public class GGCGuiLotto {

public static void main(String[] args) {    

//Arraylist of images

ImageIcon pic0 = new ImageIcon("pics/pic1.png");
ImageIcon pic1 = new ImageIcon("pics/pic2.png");
ImageIcon pic2 = new ImageIcon("pics/pic3.png");
ImageIcon …
Run Code Online (Sandbox Code Playgroud)

java swing jframe jbutton actionlistener

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