簡體   English   中英

將不需要的文本懸停在JButton上

[英]Unwanted text appearing over JButton when hovering over it

我很清楚我不應該使用null布局。 但是,目前我正在使用它來測試某些東西。 我的程序很簡單:按墨西哥按鈕以顯示Diplo按鈕。 問題是,當鼠標在顯示在Diplo按鈕上時滾動時,其上方出現了混合按鈕文本。 我目前正在假設我的問題以某種方式涉及到null布局,不使用paintcomponent或方法中的某些東西,盡管我不確定這是怎么回事。

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class PanelTest extends JPanel
{
//Country Lists
public Country Mex = new Country("Mexico","Empire",15);
public Country Sel;
//Country buttons
public JButton buttonMex;
//Foreign Choices
private JButton buttonAggro;
public JButton buttonDip; 
private JButton buttonEspo;

public PanelTest(){
  setLayout(null);
   //Definitions for button
  buttonDip = new JButton();
  buttonDip.setForeground(Color.BLACK);
  buttonDip.setFont(new Font("Serif", Font.BOLD, 20));
  buttonDip.setText("Diplo");
  buttonDip.addActionListener(new DipListener());
  buttonDip.setSize(100, 50);
  buttonDip.setLocation(0,100);
  buttonDip.setBorder(null);
  buttonDip.setOpaque(false);
  buttonDip.setContentAreaFilled(false);
  buttonDip.setBorderPainted(false);
  buttonDip.setFocusPainted(false);
  add(buttonDip); 
  buttonDip.setEnabled(false);
  buttonDip.setVisible(false);

  buttonMex = new JButton();
  buttonMex.setForeground(Color.BLACK);
  buttonMex.setFont(new Font("Serif", Font.BOLD, 20));
  buttonMex.setText("Mexico");
  buttonMex.addActionListener(new MexListener());
  buttonMex.setSize(100, 50);
  buttonMex.setLocation(0,0);
  buttonMex.setBorder(null);
  buttonMex.setOpaque(false);
  buttonMex.setContentAreaFilled(false);
  buttonMex.setBorderPainted(false);
  buttonMex.setFocusPainted(false);
  add(buttonMex); 
  buttonMex.setEnabled(false);
  buttonMex.setVisible(false);
  //MAIN 
  buttonValid();
}
public void paintComponent(Graphics g)
{
}
public void buttonValid(){
      if(Mex.getVal() == true){
      buttonMex.setEnabled(true);
      buttonMex.setVisible(true);
  }
}
public void FTest()
{
       buttonMex.setEnabled(false);
       buttonMex.setVisible(false);
       buttonDip.setEnabled(true);
       buttonDip.setVisible(true);
}
  private class MexListener implements ActionListener
{
  public void actionPerformed(ActionEvent e)
  {
    FTest();  
    Sel = Mex; 
  }
}
private class DipListener implements ActionListener
 {
 public void actionPerformed(ActionEvent e)
   {
     Mex.setRel(-30);
   }
 }

這是我的程序產生的照片

https://i.stack.imgur.com/PhzQN.png

public void paintComponent(Graphics g)
{
}

不要重寫paintComponent()。 沒有理由要使用空方法。 刪除該代碼:

當您執行此操作時,面板的背景將永遠不會被清除,並且您可能會有繪畫痕跡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM