2016-11-11 11 views
0

nullレイアウトを使用しないとわかっています。しかし、現時点で私は何かをテストするために使っています。私のプログラムは簡単です:メキシコのボタンを押して、Diploボタンを表示させてください。問題は、私がDiploボタンの上にマウスをスクロールした後で、mexボタンのテキストがその上に表示されることです。私は現在、私の問題は何とかnullのレイアウト、paintcomponentを使用していない、またはメソッドの何かを含んでいると仮定していますが、何が間違っているのか分かりません。JButton上にカーソルを置いたときに不要なテキストが表示される

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

答えて

1
public void paintComponent(Graphics g) 
{ 
} 

を生産するものの写真は、paintComponent()をオーバーライドしないのです。空のメソッドを持つ理由はありません。そのコードを取り除く:

これを行うと、パネルの背景が決してクリアされず、ペイントアーチファクトが発生することがあります。

関連する問題