成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

移動適配代碼java 可移動代碼

求解答以下的java源代碼,詳細點,說明這個程序的設(shè)計思路,還有比如運用了多線程的話運用了多線程的什么

import java.awt.*;

目前成都創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管運營、企業(yè)網(wǎng)站設(shè)計、泌陽網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

import java.awt.event.*;

import java.util.Random;

import javax.swing.Timer;

public class PinBall

{

private final int TABLE_WIDTH = 300;//桌面寬度

private final int TABLE_HEIGHT = 400;//桌面高度

private final int RACKET_Y = 340;//球拍的垂直位置

private final int RACKET_HEIGHT = 20;//球拍高度

private final int RACKET_WIDTH = 60;//球拍寬度

private final int BALL_SIZE = 16;//球的大小

private Frame f = new Frame("彈球游戲");//實例化一個窗口

Random rand = new Random();//實例化一個隨機數(shù)生成器

private int ySpeed = 10;//小球的縱向運動數(shù)度、

private double xyRate = rand.nextDouble() - 0.5;//返回一個-0.5到0.5之間的比率用控制小球運動方向

private int xSpeed = (int)(ySpeed*xyRate*2);//這個橫向速度在-10到10之間,產(chǎn)生左右擺動運動效果

private int ballX = rand.nextInt(200)+20;//小球開始的橫坐標位置,200表示產(chǎn)生0到100之間的隨機數(shù)

private int ballY = rand.nextInt(10)+20;//小球開始的縱坐標位置

private int racketX = rand.nextInt(200);//球拍開始時的橫坐標位置

private MyCanvas tableArea = new MyCanvas();//實力化一個畫布工具,集成Canvas類

private String shape = "";//保存需要繪制圖形的字符串屬性

Timer timer;//聲明一個時間變量

private boolean isLose = false;//表示游戲是否結(jié)束

public void init()

{

tableArea.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));//定義畫布大小

f.add(tableArea);//添加畫布到窗口

KeyAdapter keyProcessor = new KeyAdapter()//實例化一個鍵盤監(jiān)聽事件適配器

{

public void keyPressed(KeyEvent ke)//重寫適配器里面的按下某鍵盤方法

{

if(ke.getKeyCode()==KeyEvent.VK_LEFT)//按下鍵盤左鍵時

{

if(racketX 0)//球拍左邊框不能出畫布的左邊框

racketX -=10;//按一左鍵次向左移動10個像素

}

if(ke.getKeyCode()==KeyEvent.VK_RIGHT)//按下鍵盤右鍵時

{

if(racketX TABLE_WIDTH - RACKET_WIDTH)//球拍右邊框不能出畫布的右邊框

racketX +=10;//按一次右鍵移動向右移動10個像素

}

}

};

f.addKeyListener(keyProcessor);//給窗口添加鍵盤監(jiān)聽器

tableArea.addKeyListener(keyProcessor);//給畫布添加鍵盤監(jiān)聽器

ActionListener taskPerformer = new ActionListener()//這里是實例化了一個監(jiān)聽接口,這個接口里面只有一個方法

{

public void actionPerformed(ActionEvent evt)//重寫這個接口里面的方法,判斷小球的位置

{

if(ballX=0 || ballX=TABLE_WIDTH-BALL_SIZE)//保證小球橫向上在畫布之內(nèi)運動

{

xSpeed = -xSpeed;//觸發(fā)反方向運動

}

if(ballY=RACKET_Y-BALL_SIZE(ballXracketX||ballXracketX+RACKET_WIDTH))//出了球拍的可擊打范圍

{

timer.stop();//停止對監(jiān)聽器的觸發(fā)

isLose=true;//將標志isLose變量置為true

tableArea.repaint();//調(diào)用畫布的重繪方法

}

else if(ballY=0||(ballY=RACKET_Y-BALL_SIZEballYracketXballX=racketX+RACKET_WIDTH))//小球在球拍之內(nèi),而其到達球拍的高度

{

ySpeed=-ySpeed;//上下方向改變,小球反彈

}

ballY+=ySpeed;//小球的坐標在縱向上增加

ballX+=xSpeed;//小球的坐標在橫向上的增加

tableArea.repaint();//調(diào)用畫布的重繪方法3

}

};

timer = new Timer(100,taskPerformer);//每隔0.1秒運行一次監(jiān)聽器

timer.start();//計時器開始運行

f.addWindowListener(new MyListener());//關(guān)閉窗口事件

f.pack();//設(shè)置窗口最佳大小

f.setVisible(true);//顯示窗口

}

class MyListener extends WindowAdapter//關(guān)閉窗口的類

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

public static void main(String[] args)//程序入口

{

new PinBall().init();//調(diào)用PinBall類里面的init()方法

}

class MyCanvas extends Canvas//建一個集成Canvas類的類

{

public void paint(Graphics g)//重寫父類的繪圖方法

{

if(isLose)//如果isLose為真,則在畫布里打印“游戲已結(jié)束”

{

g.setColor(new Color(255,0,0));//當前顏色

g.setFont(new Font("黑體",Font.BOLD,30));//字體名稱,樣式,大小

g.drawString("游戲已結(jié)束!",50,200);//按坐標繪制文字圖形

}

else//負責

{

g.setColor(new Color(240,240,80));//當前顏色

g.fillOval(ballX,ballY,BALL_SIZE,BALL_SIZE);//填充顏色,根據(jù)坐標和長寬填充圓形

g.setColor(new Color(80,80,200));//當前顏色

g.fillRect(racketX,RACKET_Y,RACKET_WIDTH,RACKET_HEIGHT);//填充顏色,根據(jù)坐標和長寬填充矩形

}

}

}

}

java中各種類型的鍵盤輸入代碼是什么

下面的是鍵盤和鼠標的各種事件,看一下是不是你要的!

鼠標監(jiān)聽器

鼠標監(jiān)聽器mouseListener監(jiān)聽鼠標事件MouseEvent。相應(yīng)事件和處理方法如下表:

鼠標事件 處理方法

MOUSE_CLICKED MouseClicked (MouseEvent) 鼠標點擊(單或雙)

MOUSE_PRESSED MousePressed (MouseEvent) 鼠標按下

MOUSE_RELEASED MouseReleased(MouseEvent) 鼠標松開

MOUSE_ENTERED MouseEntered (MouseEvent) 鼠標進入(某組件區(qū)域)

MOUSE_EXITED MouseExited (MouseEvent) 鼠標離開(某組件區(qū)域)

鼠標事件MouseEvent常用方法

int getClickCount() 得到點擊次數(shù)1 OR 2;

int getX(), int getY() 得到鼠標的(象素)位置。

對于鼠標的移動和拖放,另外用鼠標運動監(jiān)聽器mouseMotionListener。因為許多程序不需要監(jiān)聽鼠標運動,把兩者分開可簡化程序。有兩個方法處理鼠標運動事件:

MOUSE_MOVED MouseMoved (MouseEvent) 鼠標在移動MOUSE_DRAGGED MouseDragged(MouseEvent) 鼠標被拖動

下面的例程演示簡單的鼠標監(jiān)聽,并在屏幕上輸出鼠標操作的信息。

例2

下面是討論MouseMotionListener的使用時機,它提供的下面的兩個方法,可讓你隨時掌握鼠標的坐標,并處理拖曳鼠標的操作。

MouseMotionListener mouseDragged(MouseEvent e)

mouseMoved(MouseEvent e)

-----------------------------------------------------------------------

下面的范例讓你知道鼠標在JFrame上的坐標,并拖曳出直線來。

MouseDemo3.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/*為了達到畫線的功能,我們分別implements MouseListener與MouseMotionListener.

*/

public class MouseDemo3 extends JFrame implements MouseListener,MouseMotionListener{

int flag;//flag=1代表Mouse Moved,flag=2代表Mouse Dragged

int x=0;

int y=0;

int startx,starty,endx,endy;//起始坐標與終點坐標

public MouseDemo3(){

Container contentPane=getContentPane();

contentPane.addMouseListener(this);

contentPane.addMouseMotionListener(this);

setSize(300,300);

show();

addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

);

}

/*由mousePressed(),mouseReleased()取得示拖曳的開始與結(jié)束坐標*/

public void mousePressed(MouseEvent e){

startx=e.getX();

starty=e.getY();

}

public void mouseReleased(MouseEvent e){

endx=e.getX();

endy=e.getY();

}

public void mouseEntered(MouseEvent e){ }

public void mouseExited(MouseEvent e){ }

public void mouseClicked(MouseEvent e){ }

/*mouseMoved(),mouseDragged()取得鼠標移動的每一個坐標,并調(diào)用repaint()方法*/

public void mouseMoved(MouseEvent e){

flag=1;

x=e.getX();

y=e.getY();

repaint();

}

public void mouseDragged(MouseEvent e){

flag=2;

x=e.getX();

y=e.getY();

repaint();

}

public void update(Graphics g){

g.setColor(this.getBackground());

g.fillRect(0,0,getWidth(),getHeight());

paint(g);

}

public void paint(Graphics g){

g.setColor(Color.black);

if (flag==1){

g.drawString("鼠標坐標:("+x+","+y+";)",10,50);

g.drawLine(startx,starty,endx,endy);

}

if (flag==2){

g.drawString("拖曳鼠標價坐標:("+x+","+y+";)",10,50);

g.drawLine(startx,starty,x,y);

}

}

public static void main(String[] args){

new MouseDemo3();

}

}

例3

實現(xiàn)一個簡單的鼠標控制程序MouseController。程序功能很簡單:隨機移動鼠標并點擊左鍵。

代碼如下:

import java.awt.AWTException;

import java.awt.Dimension;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.event.InputEvent;

import java.util.Random;

/**

*

*/

/**

* @Create date 2007-11-6

*/

public class MouseController implements Runnable {

private Dimension dim;

private Random rand;

private Robot robot;

private volatile boolean stop = false;

public MouseController() {

dim = Toolkit.getDefaultToolkit().getScreenSize();

rand = new Random();

try {

robot = new Robot();

} catch (AWTException ex) {

ex.printStackTrace();

}

}

public void run() {

while(!stop) {

int x = rand.nextInt(dim.width);

int y = rand.nextInt(dim.height);

robot.mouseMove(x, y);

robot.mousePress(InputEvent.BUTTON1_MASK);

try {

Thread.sleep(2000);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

}

}

public synchronized void stop() {

stop = true;

}

public static void main(String[] args) {

MouseController mc = new MouseController();

Thre

$False$

ad mcThread = new Thread(mc);

System.out.println("Mouse Controller start");

mcThread.start();

try {

Thread.sleep(60000);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

mc.stop();

System.out.println("Mouse Controller stoped");

}

}

例4 本例程演示鼠標監(jiān)聽器,鼠標點擊和運動的監(jiān)聽。

///

// MouseEvt.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

class MyPanel extends JPanel implements MouseMotionListener{

public MyPanel() {

addMouseListener(new MouseAdapter() {

publicvoid mouseClicked(MouseEvent evt) {

if (evt.getClickCount() = 2)

System.out.println("\n雙擊鼠標");

int x = evt.getX(); int y = evt.getY();

System.out.println("點擊鼠標的位置\nX:" + x + "\ty: " + y);

}

});

addMouseMotionListener(this);

}

publicvoid mouseMoved(MouseEvent evt){

System.out.println("\n鼠標正在移動");

}

publicvoid mouseDragged(MouseEvent evt){

System.out.println("\n鼠標正在拖動");

}

}

class MyFrame extends JFrame{

public MyFrame(){

setTitle("鼠標事件示例程序");

setSize(300, 200);

addWindowListener(new WindowAdapter(){

publicvoid windowClosing(WindowEvent e){

System.exit(0);

}

} );

Container contentPane = getContentPane();

contentPane.add(new MyPanel());

}

}

publicclass MouseEvt{

publicstaticvoid main(String[] args){

JFrame frame = new MyFrame();

frame.setVisible(true);

}

}

///

簡要說明

在MyPanel的構(gòu)建器中添加了鼠標適配器來監(jiān)聽鼠標點擊數(shù)和位置。也添加了運動監(jiān)聽器來處理移動和拖放操作。

鼠標雙擊事件

鼠標的單雙擊事件在很多時候?qū)ξ覀儙椭艽?但是在JAVA中卻沒有給出鼠標雙擊事件.我們可以通過事件源e.getClickCount()==2來判斷鼠標點擊次數(shù)來實現(xiàn)鼠標雙擊事件,例如: public class MyMouseListener

extends java.awt.event.MouseAdapter ...{

public void mouseClicked(MouseEvent e) ...{

System.out.println("clicked");

int clickTimes = e.getClickCount();

if (clickTimes == 2) ...{

System.out.println("Doublc Clicked!");

}

}

}

但是這樣并沒有達到我們的要求,因為在每次觸發(fā)雙擊事件的同時會觸發(fā)單擊事件.所以我們試圖改進以上方案,不使用系統(tǒng)提供的e.getClickCount()方法.可以考慮當?shù)谝淮螁螕羰髽说臅r候讓鼠標單擊事件延時0.2秒執(zhí)行,而在這段時間里等待第二次單擊,如果有第二次單擊,那么我們執(zhí)行雙擊事件任務(wù),取消單擊任務(wù);如果在這段時間沒有等到再次單擊,那么執(zhí)行單擊任務(wù).

下面是用定時器延時單擊事件實現(xiàn)鼠標雙擊事件,單擊和雙擊事件互不影響!

public class MyMouseListener

extends java.awt.event.MouseAdapter ...{

private static boolean flag=false;//用來判斷是否已經(jīng)執(zhí)行雙擊事件

private static int clickNum=0;//用來判斷是否該執(zhí)行雙擊事件

public void mouseClicked(MouseEvent e) ...{

final MouseEvent me=e;//事件源

this.flag=false;//每次點擊鼠標初始化雙擊事件執(zhí)行標志為false

if (this.clickNum == 1) ...{//當clickNum==1時執(zhí)行雙擊事件

this.mouseDoubleClicked(me);//執(zhí)行雙擊事件

this.clickNum=0;//初始化雙擊事件執(zhí)行標志為0

this.flag=true;//雙擊事件已執(zhí)行,事件標志為true

return;

}

//定義定時器

java.util.Timer timer=new java.util.Timer();

//定時器開始執(zhí)行,延時0.2秒后確定是否執(zhí)行單擊事件

timer.schedule(new java.util.TimerTask() ...{

private int n=0;//記錄定時器執(zhí)行次數(shù)

public void run() ...{

if(MyMouseListener.flag)...{//如果雙擊事件已經(jīng)執(zhí)行,那么直接取消單擊執(zhí)行

n=0;

MyMouseListener.clickNum=0;

this.cancel();

return;

}

if (n == 1) ...{//定時器等待0.2秒后,雙擊事件仍未發(fā)生,執(zhí)行單擊事件

mouseSingleClicked(me);//執(zhí)行單擊事件

MyMouseListener.flag = true;

MyMouseListener.clickNum=0;

n=0;

this.cancel();

return;

}

clickNum++;

n++;

}

},new java.util.Date(),500);

}

/** *//**

* 鼠標單擊事件

* @param e 事件源參數(shù)

*/

public void mouseSingleClicked(MouseEvent e)...{

System.out.println("Single Clicked!");

}

/** *//**

* 鼠標雙擊事件

* @param e 事件源參數(shù)

*/

public void mouseDoubleClicked(MouseEvent e)...{

System.out.println("Doublc Clicked!");

}

}

//Test.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Test extends JFrame{

public Test(){

super("test");

init();

this.setSize(800,600);

this.setVisible(true);

}

private void init(){

JButton b=new JButton("button");

b.setBounds(50,50,100,30);

this.getContentPane().setLayout(null);

this.getContentPane().add(b);

b.addMouseListener(new MyMouseListener());

}

public static void main(String args[]){

new Test();

}

}

鍵盤監(jiān)聽器

鍵盤監(jiān)聽器KeyListener用來監(jiān)聽鍵盤事件。鍵盤事件有三種:KEY_PRESSED鍵按下了,KEY_RELEASED鍵松開了,KEY_TYPED鍵按過了。每個鍵都有一個鍵碼,普通鍵的鍵碼就是ASCII碼。鍵碼可通過int getKeyCode()方法獲得。Java設(shè)置了一種“虛擬鍵碼”(Virtual Key Code),用“VK_”作為前綴,例如VK_G。下面是某些特殊鍵的虛擬鍵碼。

鍵碼 含義 鍵碼 含義

VK_LEFT/VK_RIGHT 左右方向鍵 VK_CONTROL Ctrl鍵

VK_KP_UP 小鍵盤向上 VK_ATL Alt鍵

VK_PAUSE 暫停鍵 VK_SHIFT Shift鍵

VK_NUMBER0 小鍵盤數(shù)字0 VK_F1 功能鍵F1

VK_0 數(shù)字鍵0 VK_B 字母鍵B

虛擬鍵碼對應(yīng)的是鍵位,不區(qū)分大小寫。要想知道大小寫還必須查看修飾鍵(modifier key)。這由輸入事件InputEvent的getModifere()方法得到,把返回值與常量SHIFT_MASK, CONTROL_MASK, ALT_MASK比較,用以判定哪個修飾鍵處于“同時按下”狀態(tài)。

監(jiān)聽器KeyListener有三個方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt),keyTyped(KeyEvent evt),分別用于相應(yīng)事件發(fā)生后的處理。下面的例程中給自己的鍵盤監(jiān)聽器建立了showKeyEventMsg方法來顯示按鍵信息。

除了getKeyCode()方法得到鍵碼外,還可用getKeyChar()方法得到輸入的字符,用getKeyText(code)方法得到輸入的字符串。用isShiftDown()判斷shift鍵是否被按下等。當按下Control鍵時getKeyText返回的是“ctrl",Alt和Shift也類似。

下面的例子演示得到鍵碼和字符的方法,在命令行上顯示結(jié)果。

例1 本例程演示鍵盤監(jiān)聽器后鍵碼的用法。

///

// KeyEvt.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

class MyKeyListener implements KeyListener{

publicvoid keyPressed(KeyEvent evt) {

System.out.println("\n按鍵被按下");

showKeyEventMsg(evt);

}

publicvoid keyReleased(KeyEvent evt){ }

publicvoid keyTyped(KeyEvent evt) { }

privatevoid showKeyEventMsg(KeyEvent evt){//顯示按鍵事件信息

//得到按鍵對應(yīng)的整型數(shù)

int code = evt.getKeyCode();

//返回按鍵事件所代表的字符

char c = evt.getKeyChar();

//得到代表按鍵的字符串

String szText = evt.getKeyText(code);

if (code != KeyEvent.VK_UNDEFINED)

System.out.println("\n按鍵對應(yīng)的整型數(shù):"+code);

if (c != KeyEvent.CHAR_UNDEFINED)

System.out.println("\n與按鍵相聯(lián)系的字符:"+c);

if (evt.isShiftDown())

System.out.println("\n按鍵Shift被按下");

System.out.println("\n按鍵本身的字符串:"+szText);

}

}

class ButtonPanel extends JPanel{

public ButtonPanel() {

//新建一個文本域組件

tf = new JTextField(20);

add(tf);

//指定用來處理該按鈕事件的監(jiān)聽器對象為JPanel本身

myListener = new MyKeyListener();

tf.addKeyListener(myListener);

}

private JTextField tf;

private MyKeyListener myListener;

}

class ButtonFrame extends JFrame{

public ButtonFrame() {

setTitle("鍵盤事件示例程序");

setSize(300, 200);

setLocation(100,100);

addWindowListener(new WindowAdapter() {

publicvoid windowClosing(WindowEvent e)

{ System.exit(0);

}

});

Container ctPane = getContentPane();

ctPane.add(new ButtonPanel());

}

}

publicclass KeyEvt{

publicstaticvoid main(String[] args) {

JFrame frame = new ButtonFrame();

frame.setVisible(true);

}

}

///簡要說明

程序建立了自己的鍵盤監(jiān)聽器MyKeyListener,定義了一個新方法showKeyEventMsg用來在標準輸出設(shè)備上顯示有關(guān)的鍵盤信息。

在面版ButtonPanel上建立文本框并加鍵盤監(jiān)聽器。把面版ButtonPanel放到窗口ButtonFrame中。

用java程序?qū)崿F(xiàn)

機器人類(源類):

public class Robot {

public void cry(){

System.out.println("機器人叫");

}

public void run(){

System.out.println("機器人跑");

}

}

狗類(目標類):

public class Dog {

public void cry(){

System.out.println("像狗一樣叫");

}

public void run(){

System.out.println("像狗一樣跑");

}

}

適配器類(繼承源類并重寫它的方法,目標類作為屬性):

public class Adaper extends Robot{

private Dog dog;

public Adaper(Dog dog) {

this.dog=dog;

}

@Override

public void cry() {

dog.cry();

}

@Override

public void run() {

dog.run();

}

}

測試類

public class Test {

public static void main(String[] args) {

Dog dog=new Dog();

Robot robot=new Adaper(dog);

robot.cry();

robot.run();

}

}

麻煩java高手把這幾個import 一個一個解釋一下,高分

首先:import 的功能

導入支持類(可以是JDK基礎(chǔ)類或者自己編寫的類),可以供本類調(diào)用方法和屬性。

import java awt.* awt 是java圖形界面設(shè)計類 awt.*表示導入awt包下的所有類。其中awt.Font 根據(jù)單詞可以看出是圖形界面字體相關(guān)類,awt.Color為顏色相關(guān)類其它的分別為鼠標適配 鼠標事件等等相關(guān)類!

import java util.*意思為導入util包下的所有類.array 為數(shù)組相關(guān)類 random為隨即數(shù)相關(guān)類,time為時間相關(guān)類,timerTask為定時任務(wù)相關(guān)類

import javax.swing.*為與awt類似的一個構(gòu)造圖形界面的類。且swing為awt的擴展,它們之間的具體關(guān)系可以查看相關(guān)資料或百度!Jpanle 為一個窗口、jframe為一個整體架構(gòu)!

純手寫- - 望采納

網(wǎng)頁標題:移動適配代碼java 可移動代碼
當前地址:http://jinyejixie.com/article32/dodoopc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航標簽優(yōu)化、微信小程序品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
江陵县| 尼木县| 佛学| 长春市| 五原县| 巴林右旗| 慈利县| 鹰潭市| 泽州县| 宣化县| 海晏县| 凌云县| 哈密市| 长沙县| 通海县| 满城县| 湖口县| 岳池县| 普兰县| 辽中县| 九台市| 东宁县| 阿鲁科尔沁旗| 保德县| 吉木乃县| 行唐县| 新和县| 通江县| 屏南县| 额济纳旗| 藁城市| 繁峙县| 日土县| 乌鲁木齐县| 二手房| 紫阳县| 郁南县| 陈巴尔虎旗| 维西| 长垣县| 左权县|