相关疑难解决方法(0)

如何在Java GUI中设置按钮的背景颜色?

下面是在特定pannel3上以gridlayout形式创建9个按钮的代码.我想要的是使每个按钮的背景为黑色,上面有灰色文字.有人可以帮忙吗?

 for(int i=1;i<=9;i++)
 {
     p3.add(new JButton(""+i));
 }
Run Code Online (Sandbox Code Playgroud)

java swing jbutton

17
推荐指数
2
解决办法
18万
查看次数

如何更改鼠标按下时的JButton颜色?

我希望根据鼠标事件(鼠标进入,退出,按下等)获得自定义颜色.所以要做到这一点,我写了下面的代码.它对一切都很好,除了鼠标按下事件的情况,什么都不做.它只有当我覆盖在色彩的作品UIManager是这样UIManager.put("Button.select", Color.red);.问题UIManager是,它会改变我的所有按钮.

任何人都可以告诉我,我可能做错了什么,或者最好的方法是什么,我想要做什么?

我的代码:

final JButton btnSave = new JButton("Save");

btnSave.setForeground(new Color(0, 135, 200).brighter());
btnSave.setHorizontalTextPosition(SwingConstants.CENTER);
btnSave.setBorder(null);
btnSave.setBackground(new Color(3, 59, 90));

btnSave.addMouseListener(new MouseListener() {
    @Override
    public void mouseReleased(MouseEvent e) {
        btnSave.setBackground(new Color(3, 59, 90));
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // Not working :(
        btnSave.setBackground(Color.pink);
    }

    @Override
    public void mouseExited(MouseEvent e) {
        btnSave.setBackground(new Color(3, 59, 90));
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        btnSave.setBackground(new Color(3, 59, 90).brighter());
    }

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

java swing mouseevent jbutton

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

布局似乎有些问题,JButton在调整窗口大小时显示出意外行为

JRE版本1.7更新3

预期的行为

当我运行该程序时,它按预期工作,一切顺利.当我点击STOP JButton动画停止并且同一文本JButton改变为START.现在当我点击时BALL COLOUR JButton,BALL变化的颜色以及变化的颜色BALL COLOUR JBUTTON也会变化BALL.如果我按原样运行我的应用程序而不调整大小,则整个行为都有效.

意外行为

但当RESIZEJFrame通过拉动时Right Side,那就是当我的应用程序的意外行为被显示时,在某种意义上说,如果我按下STOP JButton然后单击BALL COLOUR按钮,JButton之前单击的文本更改为的文本STARTSTOP在不应该更改时再次更改为当它应该改变为球的颜色时,以及BALL COLOUR JButton将保持不变或将转向BLUE的颜色.我附上照片了解更多信息.但是如果你试图将它重新调整到原来的大小或更接近它,​​那么事情就会恢复正常.为什么会这样?任何想法或线索将非常感激.

正如我的应用程序运行如上所述的预期行为:

预期的行为

这里是意想不到的行为

意外行为

底线:

为什么应用程序像往常一样运行BEGINNING,而不是RESIZED通过拖动它RIGHT SIDE,但是如果你把它带到它的原始大小或更接近它,​​事情恢复正常,它按预期工作?

所以考虑到这个场景,我在程序中做错了什么.或者这正是我应该使用的情况SwingWorker,或者这是一个问题Layout,或隐藏的相关内容Content Pane.请放轻装:-)

这是我正在使用的代码,我把它降到最低限度,因为我想要证明我的问题:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class …
Run Code Online (Sandbox Code Playgroud)

java swing resize jframe jbutton

13
推荐指数
3
解决办法
6135
查看次数

更改所选JToggleButton的背景颜色

我试图以JToggleButton可靠,外观和感觉独立的方式改变它的颜色.

如果使用Metal L&F,那么使用UIManager是一种方法:

UIManager.put("ToggleButton.selected", Color.RED);
Run Code Online (Sandbox Code Playgroud)

注意:Iyy指出我上面的属性名称中有一个拼写错误,但我会将其留在上面,以便人们到达这里,但实际的属性名称应该是:

UIManager.put("ToggleButton.select", Color.RED);
Run Code Online (Sandbox Code Playgroud)

但是,这在我目前的外观(目前是Windows XP)中不起作用.经过一些进一步的分析,似乎Windows中的系统外观(仍然是XP)根本不使用任何Color基于UIManager属性的属性ToggleButton,或者它至少不提供它们本身(有一个在线快速查找的UIManager例子)来自的所有属性键,在示例中明确地明确限制Color属性).

我试过设置背景颜色:

Action action = new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) { /* stuff */ }
};
JToggleButton button = new JToggleButton(action);
// tried with and without opaque true
button.setOpaque(true);
button.setBackground(Color.RED);
Run Code Online (Sandbox Code Playgroud)

它不仅不会改变选定的状态,而且甚至不会影响未选择的状态.

我在尝试接收动作后尝试更改背景颜色:

@Override
public void actionPerformed(ActionEvent e)
{
    JToggleButton button = (JToggleButton)e.getSource();
    if (button.isSelected()) // alternatively, (Boolean)getValue(Action.SELECTED_KEY)
    {
        button.setBackground(Color.RED);
    }
}
Run Code Online (Sandbox Code Playgroud)

这些都不起作用.我发现工作的唯一要求是我自己在选定状态下绘制按钮(这导致一个工作示例,虽然看起来非标准): …

java swing uimanager custom-component jtogglebutton

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

如何将轴放在java中的.png文件中?

我有chart.png,其中有数据,我想用一些标签放一个简单的X - Y轴.我也想尝试不使用任何没有java附带的外部软件.我被允许使用jfreechart但是如果有一种方法可以让它看起来不错,而只是使用一些计划java代码,那会更好.有没有人对如何做这类事情有个好主意?

更新:这样的东西,但数据将用rgb值进行颜色编码,当然没有轴/标签.

pyplot延迟示例http://www.goldb.org/goldblog/cmg_images/pylot_latency_sample.png

这个图只是一个例子,它看起来与我的实际图形看起来一样......我的真实图形中可以包含每个rgb颜色值.我知道如何创建情节,我只是不知道如何将轴/标签放在BufferImage我创建的那个上

java swing png jfreechart axis-labels

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

JPanels中的JButtons带有GridLayout JFrame

Java/Eclipse IDE在这里.

我有一个JFrame设置为大小为NxN的GridLayout.用户将N作为程序开头的命令行给出.NxN模式的JButtons被添加到JPanels的窗口中,由GridLayout设置在位置(我认为).

每个JButton都需要自己的JPanel来使用GridLayout吗?我的印象是你可以为所有按钮设置一个JPanel,并将JPanel设置为JButtons的GridLayout.我想在按钮数组的左侧添加另一个JPanel,以显示按钮单击(JLabel)和同一左侧JPanel内的重置按钮.

这是(一点点)我的代码,其中N由用户给出,system是我的后台进程类,ButtonEvent是ActionListener/actionPerformed的类:

JFrame window = new JFrame("");
GridLayout layout = new GridLayout(N,N);
window.setLayout(layout);

for (int row = 0; row < N; row++){
    for (int col = 0; col < N; col++){
        JPanel panel = new JPanel();
        JButton b = new JButton ("("+row+","+col+")");
        window.add(b).setLocation(row, col);
        panel.add(b);
        b.addActionListener(new ButtonEvent(b, system, row, col));
        window.add(panel);
    }
}

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的(N = 4):

http://i.imgur.com/nbQoM.png

这是(大约)我正在寻找的(N = 4):

http://i.imgur.com/SiVWO.png

我需要/想要的只是两个(或更多)JPanels,大致如上所述,我尝试过的所有布局管理器都不适合GridLayout布局JFrame.

欢迎提出有关更好解决方案的任何建议.

谢谢!

java eclipse layout user-interface swing

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

Javax.swing计时器重复正常,但ActionListener不执行任何操作

我试图在文本字段中闪烁背景颜色.我的计时器设置如下:

 Flash flash = new Flash();                      //set up timer
 tmr = new javax.swing.Timer(1000, new Flash());
 tmr.addActionListener(flash);
 tmr.setInitialDelay(0);
 tmr.setRepeats(true);
 tmr.start();                 
Run Code Online (Sandbox Code Playgroud)

我的actionListener如下:

 static class Flash implements ActionListener
 {
    public void actionPerformed(ActionEvent evt)
    {
        if (flasher)
        {
            SpreademPanel.historyPnl.NameTxt.setBackground(Color.white);
        }
        else
        {
            SpreademPanel.historyPnl.NameTxt.setBackground(Color.pink);
        }
        flasher = !flasher;
    } //actionPerformed
} //Flash
Run Code Online (Sandbox Code Playgroud)

现在,当我把它放在调试中并按照动作执行时,程序会反复执行闪存并在两个备选项之间切换.但是在屏幕上,只有第一个切换发生.之后,没有动作,虽然闪光灯仍在运转.

这有什么不对?

在此先感谢您的帮助.

java swing javax.swing.timer

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

二维按钮网格的最佳 Swing 布局?

我正在尝试创建一个 JDialog,就像 Microsoft Word 中的“符号”对话框一样,您可以通过从“插入”菜单中选择“符号...”来获得该对话框。基本上,它是一个n x mnm直到运行时才知道)的小按钮网格。我已经有了一个使用 GridLayout 很好地工作的第一个版本。问题是,当您调整对话框大小时(并且要求您应该能够调整它的大小),按钮的大小会发生变化。我需要按钮的大小保持不变。

但我希望包含按钮的网格的尺寸发生变化。例如,如果对话框变宽,但高度保持不变,则行数应减少,而列数应增加。

我想了几种方法来解决这个问题:

  1. 调整对话框大小后,创建一个新的 GridLayout 并用按钮重新填充它。我打算尝试一下,看看它看起来如何,但这似乎是一种笨拙的方法。
  2. 使用其他类型的布局,例如 FlowLayout。我尝试了一下,但它把所有n x m按钮排成一排。我不想使用水平滚动条,并且按钮超出了右边缘。不管怎样,它应该是一个二维的按钮网格。

解决这个布局问题的最佳方法是什么?

java swing layout-manager grid-layout flowlayout

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

JButton选择的方法不起作用

下面的代码是在选择3个按钮中的任何一个时更改背景颜色:红色,绿色或蓝色.当我选择其中任何一个时,实际上什么也没发生.但是,从JButtons更改为JRadioButtons或JToggleButtons确实有效.谁知道为什么?是因为JButton.isselected()方法被窃听并且它总是返回false?我感谢任何帮助......谢谢.

public class bgcolor2 extends JFrame
{
private static final int FRAME_WIDTH = 300;
private static final int FRAME_HEIGHT= 400;
private ActionListener listener;
private JButton greenbutton;
private JButton redbutton;
private JButton bluebutton;
private JPanel colorpanel;
private JPanel buttonpanel;

public bgcolor2()
{
    colorpanel = new JPanel();
    add(colorpanel,BorderLayout.CENTER);

    class bgcolorlistener implements ActionListener
    {
        public void actionPerformed(ActionEvent event)
        {
            changebgcolor();    
        }
    }
    listener=new bgcolorlistener();
    createbuttons();
    setSize(FRAME_WIDTH,FRAME_HEIGHT);
}

public void createbuttons()
{
    greenbutton = new JButton("Green");
    greenbutton.addActionListener(listener);
    bluebutton = new JButton("Blue");
    bluebutton.addActionListener(listener);
    redbutton = …
Run Code Online (Sandbox Code Playgroud)

java swing selection jbutton jtogglebutton

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

如何在Java(Swing)中使用GridBayLayout在我的框架中生成此特定图像?

期望的主GUI

基本上,我该如何生成这个?我很确定这是一份工作GridBagLayout,但我无法理解如何正确调整'动作窗格'与'菜单栏'的大小.红色和黑色线条表示我相信您将在这种情况下使用的网格(3x3),但我可能完全错误,并且可能有一种方法可以在不同的配置中执行此操作.我试图勾搭的weightx,weighty,gridheight,gridwidth价值观GridBagConstraints,但我不能在这里实现我的目标.

请注意,第二条红线应该恰好是框架下半部分高度的三分之一.

这是我最近的尝试,尝试使用3x6网格(c是GridBagConstraints对象,characterPortraits包含所有肖像,currentScreen是'Action Pane'):

c.fill = GridBagConstraints.BOTH;
    c.weightx = 0.25;
    c.weighty = (1/6);
    c.gridx = 0;
    c.gridy = 0;
    c.gridheight = 3;
    pane.add(characterPortraits.get(0), c);  

    c.gridx = 2;        
    pane.add(characterPortraits.get(1), c);          

    c.gridx = 0;
    c.gridy = 3;
    c.gridheight = 3;
    pane.add(characterPortraits.get(2), c);  

    c.gridx = 2;        
    pane.add(characterPortraits.get(3), c);

    //c.fill = GridBagConstraints.NONE;
    c.weightx = 1.0;
    c.weighty = 1.0;
    c.gridx = 1;
    c.gridy = 0;
    c.gridheight = 3;
    pane.add(currentScreen, c);    
Run Code Online (Sandbox Code Playgroud)

相反,这会在其象限的底部三分之一处生成每个肖像,而动作窗格占据中心列的5/6而不是4/6,就像我想要的那样.任何想法都会有所帮助 谢谢!-B.

编辑:我正在设计此应用程序以具有固定的窗口大小; …

java swing gridbaglayout

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