在NetBeans 8.0中,我製作了一個Paint程序,我需要我的主文件中的代碼影響我的其他文件(接口文件)中的某些內容。我怎樣才能做到這一點?我的代碼:我如何影響另一個包含代碼的文件?
package paintapp;
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.event.ActionListener;
public class PaintApp extends javax.swing.JFrame {
int colourR, colourG, colourB;
static String Ccolour = "BLACK";
public static void main(String[] args) {
JFrame main = new JFrame("Tessellating Pi - Paint");
PaintInterface pi = new PaintInterface();
main.add(pi);
main.setSize(1000, 1000);
main.setVisible(true);
JFrame j = new JFrame("Colour Chooser");
JButton c = new JButton("Change Colour");
j.add(c);
j.setSize(150, 100);
j.setVisible(true);
c.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if ("BLACK".equals(Ccolour)) {
Ccolour = "RED";
//code to change code in interface to set colour to red
}
}
}
);
}
}
這是接口:
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.*;
public class PaintInterface extends JPanel implements MouseListener, MouseMotionListener {
static int x = 0, y = 0;
@Override
public void paint(Graphics g) {
this.setBackground(Color.white);
this.addMouseMotionListener(this);
this.addMouseListener(this);
g.setColor(Color.black);
g.fillRect(x, y, 3, 3);
}
@Override
public void mouseDragged(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
}
我需要將消息發送給我換了顏色的接口。我該怎麼做呢?有沒有其他的方法來做到這一點?
'..extends JPanel .. @Override .. public void paint(Graphics g){'對於Swing組件,重寫'paintComponent'而不是'paint'。當覆蓋任何一個時,首先調用超級方法繪製BG和邊框等。 –